JIT, bytecode e por que “compilado × interpretado” é simplificação

Reconhecer bytecode, JIT e AOT e compreender que estratégias de execução podem ser combinadas.

JIT, bytecode e por que “compilado × interpretado” é simplificação

Objetivo

Reconhecer bytecode, JIT e AOT e compreender que estratégias de execução podem ser combinadas.

Conceitos essenciais

Bytecode

Representação intermediária destinada a uma VM/runtime; não é necessariamente código nativo da CPU.

JIT

Just-In-Time compilation transforma código durante a execução, frequentemente usando informações observadas sobre trechos utilizados.

AOT

Ahead-Of-Time compila antes da execução principal.

Estratégias híbridas

JavaScript moderno, Java, .NET e outros ambientes podem combinar parsing, IR, interpretação, JIT ou AOT. A melhor pergunta é “como esta implementação executa este programa?”.

Custos

JIT pode melhorar trechos quentes, mas tem custo de compilação, memória e warm-up.

Modelo mental

SOURCE → PARSE → IR/BYTECODE? → INTERPRETAÇÃO/JIT/AOT? → CÓDIGO NATIVO → CPU

Exemplo e demonstração

Uma engine JavaScript pode iniciar rapidamente com uma representação interna e otimizar funções frequentemente executadas; detalhes variam entre engines.

Experimento / prática

  • Classifique bytecode como fonte, intermediário ou nativo.
  • Explique JIT em uma frase e AOT em outra.

Erros comuns

  • Linguagem é intrinsecamente e exclusivamente compilada ou interpretada.
  • JIT não possui custos.

Resumo

Ao concluir esta aula, revise o modelo mental e tente explicá-lo com suas próprias palavras antes de avançar.