Compilação dinâmica
Compilação dinâmica é o processo usado por algumas linguagens de programação para aumentar o desempenho de programas durante a execução. É geralmente usada nos casos em que a otimização do programa só pode ser feita em tempo de execução. Apesar do conceito ter-se originado em Self, a implementação mais conhecida é Java.
Ambientes que usam compilação dinâmica possuem tipicamente programas que rodam lentamente nos primeiros minutos, e que são otimizados gradualmente com o uso, através de recompilação de código após a análise de execução. Tal característica é um limitador para certas categorias de programas. JIT é uma forma de compilação dinâmica.[1]
Uma técnica relacionada é a compilação incremental, usada em algumas versões de Lisp, por exemplo. Nela, o compilador é parte do ambiente de execução, por forma a que o código fonte possa ser lido a qualquer momento, sendo traduzido em linguagem de máquina imediatamente ao programa, sob demanda. Entretanto, a compilação incremental não envolve otimizações no programa após as primeiras execuções.
Outra técnica relacionada é a recompilação dinâmica, a funcionalidade de alguns emuladores e máquinas virtuais em que o sistema recompila parte do programa durante a execução.[2][3]