JIT vs. Intérprete
A compilação Just In Time (também conhecida como tradução dinâmica ou JIT) é uma técnica usada na computação para melhorar a qualidade do desempenho em tempo de execução de um programa de computador. É a junção de duas idéias encontradas em ambientes de tempo de execução: compilação de bytecode e compilação dinâmica (que é um processo que algumas implementações da linguagem de programação usam para obter desempenho enquanto um sistema está executando uma ação).
Um intérprete descreve com mais precisão a execução de uma ação por meio de um programa de computador. Existem algumas variações no tipo de ação que um intérprete realmente executa: Ele executa diretamente o código fonte de um programa; converte o código fonte em uma representação que é uma representação intermediária eficiente e depois executa o referido código; executa código pré-compilado que foi armazenado e criado por um compilador que faz parte do sistema de intérpretes.
O JIT tem a capacidade de combinar as vantagens encontradas na interpretação e na compilação estática (ou seja, com antecedência). Como intérprete, o JIT é capaz de melhorar o desempenho armazenando em cache os resultados dos blocos de código que foram traduzidos - em comparação com a simples reavaliação de cada linha ou operando no código toda vez que ocorre (como no idioma interpretado). Assim como o código de compilação estática no momento do desenvolvimento, o JIT pode recompilar o código se este for o plano de ação mais vantajoso. Além disso, na mesma linha da compilação estática, o JIT é capaz de impor garantias de segurança.
Assim como os compiladores, os intérpretes têm a capacidade de traduzir código. Ambos são os principais métodos de implementação de linguagens de programação; no entanto, as categorias de 'compilador' ou 'intérprete' não são distintas (por suas funções duplas como tradutores de código). A desvantagem mais óbvia de usar um intérprete é que, uma vez que o código seja interpretado, o programa inevitavelmente será mais lento do que quando simplesmente compilá-lo; no entanto, leva muito menos tempo para interpretar a codificação do que para compilá-la e executá-la (especialmente pertinente ao prototipar e testar código).
De um modo geral, o JIT oferece desempenho muito melhor que os intérpretes e, em muitos casos, fornece desempenho muito melhor que os compiladores estáticos. Sua superioridade sobre o JIT, no entanto, não o impede de ter algumas desvantagens principais: há um pequeno atraso na execução inicial de um aplicativo (um efeito colateral de levar tempo para carregar e compilar bytecode). Eventualmente, gerará uma melhor codificação; no entanto, o atraso inicial inerente a isso aumentará com a qualidade da codificação.
Resumo:
1. JIT é uma técnica usada para melhorar a qualidade do desempenho do tempo de execução em um ambiente de tempo de execução; um intérprete define a execução de uma ação através de um programa de computador.
2. O JIT combina as vantagens da interpretação e compilação estática; um intérprete pode traduzir código como um compilador, mas em detrimento da velocidade do programa.