Processador Híbrido - Compilação e Interpretação
Muitas linguagens modernas adotam um sistema de processamento híbrido, que combina as duas abordagens de linguagens compiladas ou interpretadas para otimizar a portabilidade e o desempenho.
Note
Leia o texto sobre Diferença entre compilador e interpretador para entender esses ganhos do processador híbrido.
Abaixo um fluxo em duas etapas que é a base da filosofia do Java “Write Once, Run Anywhere” (Escreva uma vez, Rode em qualquer lugar).
graph TD
subgraph "Fase 1: Compilação"
A["<b>Código-Fonte</b><br/>Arquivo <code>.java</code>"] -->|Executado pelo javac| B["<b>Bytecode</b><br/>Arquivo <code>.class</code><br/><i>(Plataforma-Independente)</i>"];
end
subgraph "Fase 2: Execução"
subgraph "JVM (Java Virtual Machine)<br/>"
B --> C{Carregador de Classes};
C --> D[Interpretador de Bytecode];
D -- "Executa instrução por instrução" --> F["<b>Execução no S.O. / CPU</b><br/><i>(Código Nativo)</i>"];
D -- "Identifica trecho de código frequente<br/>(HotSpot)" --> E["<b>Compilador JIT</b><br/>(Just-In-Time)"];
E -- "Compila bytecode para<br/>código nativo otimizado" --> F;
end
end
style A fill:#D6EAF8,stroke:#3498DB
style B fill:#D1F2EB,stroke:#1ABC9C
style F fill:#FCF3CF,stroke:#F1C40F
-
Bytecode: É uma representação intermediária, de baixo nível, mas que não é atrelada a nenhuma arquitetura de processador específica.
-
Compilador JIT: é um recurso da JVM onde ela monitora o código em execução e, caso detecte que um método ou laço está sendo executado repetidamente (um “HotSpot”), ela aciona o compilador JIT, traduzindo o trecho específico de bytecode em código de máquina nativo daquele computador.