O Android Runtime (ART) é um sistema de ambiente de execução usado no Android 5.0 e em versões posteriores, substituindo a máquina virtual Dalvik.
O ART, por sua vez, foi concebido para usar uma técnica de compilação chamada AOT (Ahead Of Time). Sua principal diferença em relação ao Dalvik é que ela ocorre antes da execução do aplicativo e não durante, como acontece no processo JIT (Just In Time) eliminando esta etapa durante o tempo de execução. Com isso, espera-se um aumento de velocidade de execução de até 2 vezes em relação ao Dalvik, reduzindo-se a percepção de atraso.[1]
O ART compila aplicativos inteiros em código de máquina nativo após sua instalação. Ao eliminar a interpretação da Dalvik e a compilação JIT baseada em rastreio, o ART melhora a eficiência geral de execução e reduz o consumo de energia, o que resulta em maior autonomia da bateria em dispositivos móveis . Ao mesmo tempo, o ART oferece execução mais rápida de aplicativos, mecanismos aprimorados de alocação de memória e coleta de lixo (GC), novos recursos de depuração de aplicativos e perfil de aplicativos de alto nível mais preciso. [2]
Para manter a compatibilidade com versões anteriores, o ART usa o mesmo bytecode de entrada que a Dalvik, fornecido por meio de arquivos .dex
como parte dos arquivos APK , enquanto os arquivos .odex
(.dex otimizado criado após a instalação do APK) são substituídos por executáveis de formato executável e de ligação (ELF). Depois que um aplicativo é compilado usando o utilitário dex2oat, ele é executado somente a partir do executável ELF compilado; Como resultado, o ART elimina várias sobrecargas de execução de aplicativos associadas à interpretação da Dalvik e à compilação JIT baseada em rastreamento.[2] Como desvantagem, o ART requer tempo adicional para a compilação quando um aplicativo é instalado e os aplicativos ocupam volumes um pouco maiores de armazenamento secundário(que geralmente é a memória flash ) para armazenar o código compilado.[1]
O Android 4.4 KitKat trouxe uma prévia tecnológica do ART, incluindo-o como um ambiente de tempo de execução alternativo e mantendo o Dalvik como a máquina virtual padrão. Na versão posterior do Android, o Android 5.0 Lollipop , o Dalvik foi totalmente substituído pelo ART.
O Android 7.0 Nougat introduziu o compilador JIT com perfil de código para o ART, que permite melhorar constantemente o desempenho dos aplicativos Android enquanto eles são executados. O compilador JIT complementa o compilador AOT atual do ART e ajuda a melhorar o desempenho do tempo de execução.[3]