O Android N introduz uma runtime hibrida usando compilação + interpretação + JIT para obter a melhor combinação entre tempo de instalação, uso de memória, consumo de bateria e desempenho.
Uma das principais funcionalidades introduzidas como previsto no Android KitKat e como a solução padrão no Lollipop foi o ART, uma nova runtime no momento certo. O ART substituiu o Dalvik, mas o bytecode é compatível para continuar executando arquivos DEX. Uma das principais características do ART foi a compilação AOT de aplicações durante a instalação. O principal benefício foi otimizar o código nativo para ter o melhor desempenho e precisar de menos processamento para ser executado. O ponto negativo foi o tempo de instalação e espaço. Aplicações grandes precisam de alguns minutos para serem instaladas no Lollipop e Marshmallow.
O Android N Developer Preview inclui um runtime hibrido. Não haverá qualquer compilação durante a instalação, e os aplicativos podem ser iniciados de imediato com o bytecode sendo interpretado. Existe um novo interpretador mais rápido no ART que vem acompanhado por um novo JIT, mas a informação JIT não é persistida. Ao invés disso, o código é descrito durante a execução e os dados resultantes são salvos. Depois, quando o dispositivo está inativo e carregando, o ART realizará uma compilação baseada no perfil das partes mais utilizadas do código, deixando o resto intacto.
Dependendo do que o profile encontrar durante as subsequentes execuções, o processo de compilação pode ser aplicado várias vezes na mesma aplicação, para encontrar novos caminhos de código que se tornaram otimizados (quente) ou através da aplicação de novas otimizações para o código já compilado. Embora este procedimento ainda seja chamado de AOT por questões de simplicidade, pode-se ler isso como compilação All-Of-the-Time.
Os benefícios globais desta estratégia mista de AOT + Interpretação + JIT são:
- O tempo de instalação mesmo para grandes aplicações é reduzido para segundos;
- Atualizações de sistema são instaladas mais rapidamente pelo fato de não ser necessário uma etapa de otimização;
- O uso da memória RAM da aplicação é menor, em alguns casos abaixo de 50%;
- Desempenho aperfeiçoado;
- Menor consumo de bateria.
Para encontrar mais detalhes sobre as otimizações aplicadas durante a compilação, recomendamos o podcast Episode 45: State of the ART, tendo como convidados Brian Carlstrom, líder da equipe do Android ART, e Anwar Ghuloum, diretor de engenharia da plataforma Android.