Sobes.tech
Middle

O que é compilação AOT?

sobes.tech IA

Resposta da IA

A compilação AOT (Ahead-of-Time) é o processo de transformar o código fonte de um programa ou bytecode em código de máquina antes da execução.

Principais diferenças em relação à compilação JIT (Just-In-Time):

  • Tempo de compilação: Ocorre previamente, muitas vezes na fase de construção da aplicação.
  • Desempenho: O código de máquina está pronto para ser executado imediatamente, o que pode melhorar o tempo de arranque e o desempenho máximo, pois não há custos adicionais de compilação durante a execução.
  • Tamanho do ficheiro executável: Pode ser maior, pois inclui todo o código de máquina compilado.
  • Dependência da plataforma: O código de máquina obtido é específico para a arquitetura do processador e o sistema operativo de destino.

Exemplos de uso:

  • C/C++, Rust, Go (por padrão).
  • .NET (Native AOT, ReadyToRun).
  • Java (GraalVM Native Image).
  • Angular (para a parte cliente de aplicações web).

Vantagens:

  • Arranque rápido
  • Potencialmente maior desempenho máximo
  • Redução do consumo de recursos durante a execução (sem compilador JIT)
  • Segurança melhorada (sem compilação dinâmica)

Desvantagens:

  • Tempo de compilação aumentado
  • Maior tamanho do ficheiro executável
  • Dificuldades com reflexão e código dinâmico em alguns casos
  • Dependência da plataforma

Exemplo de uso no .NET:

dotnet publish -c Release -r win-x64 /p:PublishAot=true
# Publica uma aplicação autónoma com compilação AOT para Windows x64

Exemplo de uso do GraalVM:

native-image -jar myapp.jar
# Cria um ficheiro executável nativo a partir do arquivo JAR