Compilação instantânea

No campo da programação de computadores , a compilação on-the-fly (também conhecida como tradução dinâmica , compilação just-in-time ou compilação JAT  ; em inglês, compilação just-in-time ou compilação JIT ) é uma técnica que visa melhorar o desempenho de bytecode- compilados sistemas por traduzindo código de bytes para o código de máquina nativo no tempo de execução. A compilação em tempo real é baseada em duas idéias antigas: compilação de bytecode e compilação dinâmica.

Descrição

Em um sistema chamado bytecode-compilado (Anglicismo de bytecode-compilado ), o código-fonte é compilado antecipadamente ou em tempo real (durante a execução) em uma representação intermediária , o bytecode . É o caso, por exemplo, das linguagens Limbo , Smalltalk , Perl , PHP , Python , Ruby , Lua , GNU Common Lisp ou mesmo Java , entre outras. Bytecode não é um código de máquina, ou seja, não é um código otimizado para um determinado tipo de arquitetura de computador. Dizemos que o bytecode é portátil entre diferentes arquiteturas . Este bytecode é então interpretado ou então executado por uma máquina virtual , em todos os casos para executar o programa.

Em um ambiente de compilação em tempo real, a compilação no sentido clássico, que produz bytecode, é apenas a primeira etapa em um processo de execução mais complexo. Neste caso, o bytecode é implantado no sistema de destino e quando este bytecode é executado , o compilador da linguagem de programação, em tempo real , o traduz em código de máquina nativo (ou seja, otimizado para a arquitetura da máquina que executa o programa) Isso pode ser feito em um arquivo inteiro ou especificamente em uma função do programa.

O objetivo desta abordagem é combinar as vantagens da compilação nativa e bytecode:

História

A compilação instantânea foi introduzida no início dos anos 1980 pela implementação comercial de Smalltalk  : VisualWorks . Atualmente, ele também é usado no LLVM , na máquina virtual .NET da Microsoft ou na maioria das implementações de máquina virtual Java .

Veja também

Artigos relacionados

links externos

Origens