Compilação AOT

Origem: Wikipédia, a enciclopédia livre.

Um compilador é um programa de software que converte código de programação de computador escrito por um programador humano em código binário (código de máquina) que pode ser entendido e executado por uma CPU específica. O ato de transformar o código-fonte  em código de máquina é chamado de "compilação". Quando todo o código é transformado de uma só vez antes de atingir as plataformas que o executam, o processo é chamado de Compilação AOT (Ahead-Of-Time) . Ele difere do processo Just-In-Time(JIT).[1]

Ou seja é um processo de compilação que ocorre antes da execução do aplicativo e não durante, como ocorre no processo JIT.[2] O processo AOT compila uma linguagem de alto nível (C, C++, etc.) ou um bytecode (código intermediário. Ex: Java) em código de maquina nativo (dependente do sistema) para que o arquivo binário resultante, seja executado nativamente, ajudando a eliminar sobrecargas de compilação durante a execução. Um exemplo de aplicações que usam esse processo de compilação são: Angular (plataforma de aplicações web),[3] Android Runtime (ambiente de execução do sistema operacional Android), OpenJDK,[4] etc.

A compilação Ahead of Time (AOT) proporciona um tempo de inicialização mais rápido, principalmente quando a maior parte do código é executada na inicialização. No entanto, requer mais memória e mais espaço em disco.[carece de fontes?]

A compilação Just-in-time (JIT) perfila a plataforma de destino enquanto é executada e recompila em tempo real para proporcionar melhor desempenho. O JIT gera um código aprimorado porque ele é direcionado à plataforma atual, embora normalmente leve mais tempo para ser executado do que o código compilado do AOT.[1]

Referências

  1. a b «Pros and Cons of Ahead-of-Time and Just-in-Time Compilers». ThoughtCo 
  2. «Tecnologia ART: o que realmente é e quais as suas vantagens? [Atualizado] - AndroidPIT». AndroidPIT 
  3. «Angular Docs». angular.io. Consultado em 26 de março de 2018 
  4. «JEP 295: Ahead-of-Time Compilation». openjdk.java.net. Consultado em 26 de março de 2018