Dalvik Virtual Machine (JIT) vs. Android Runtime-ART (AOT)

Como a liberação do Android 4.4 KitKat, um projeto "secreto" (bom, nem tão secreto assim) com o objetivo de melhorar o desempenho dos dispositivos com o Sistema Operacional Google Android foi apresentado em algumas versões (customizadas ou não). Este projeto introduz uma nova forma de executar os aplicativos, com a promessa de aumentar a velocidade de execução. Ele se baseia no fato dos aparelhos atuais serem mais poderosos (o meu smartphone é mais poderoso que meu notebook, inclusive). Vamos conhecer o Android Runtime, ART para os íntimos, que veio para substituir o Dalvik Virtual Machine no Android 5.0 Lollipop

Dalvik Virtual Machine (JIT) vs. Android Runtime (AOT)

Para entendermos as vantagens e desvantagens do ART, precisamos entender um pouco sobre o seu antecessor: o Dalvick. A máquina virtual Dalvik, criada por Dan Borstein, está presente no Google Android desde a suaprimeira versão.

Os aplicativos criados para rodarem no Android são escritos em Java (não confunda com Java Script, isso é uma outra história). De forma a permitir que o aplicativo rode em máquinas com arquiteturas distintas, este código é convertido em "bytecode", onde temos um código intermediário entre o código fonte e as instruções entendidas pelo hardware. E é aqui que o Dalvick entra em ação!

A máquina virtual Dalvik converte o "bytecode" em um código legível pelo hardware (que é o código de fato executado pelo processador de nossos aparelhos). A essa tradução damos o nome de "compilação" que ocorre durante a execução do aplicativo e que por isso é classificado como um processo JIT (Just In Time). Ou seja, todas as vezes que você solicita a execução de um aplicativo, ele é compilado durante a execução, por isso ele demora um pouco para abrir e entrar em funcionamento. E uma característica interessante é que ele compila apenas a parte necessária para a tarefa em questão e não o aplicativo inteiro. Após a compilação os dados são armazenados em cache. Incrível? Com certeza! Se da forma que é feito, em aparelhos top de linha já é rápido, o que já era bom pode ficar ainda melhor.

O ART, ao contrário do Dalvik, trabalha com processos chamados AOT (Ahead of Tine). O ART realiza a compilação antes da execução do aplicativo. Desta forma, o tempo que perderíamos com a compilação durante a execução do aplicativo, é aproveitado com uma compilação anterior a execução deste mesmo aplicativo (e esta compilação ocorre uma única vez após a instalação do aplicativo, o qeu faz a isntalação demorar um pouco mais do que nos aparelhos utilizando o Dalvick). O Google espera reduzir em até 2 vezes o tempo de execução dos aplicativos com o ART (eu disse que o Google ESPERA que aconteça e não que você verá acontecer em seu aparelho anteso do Android 5.0, só para deixar isso bem claro). Isso implicará em redução no consumo de bateria também (uma vez que os aplicativos já estão compilados, reduzirá o tempo de uso dos processadores para a compilação. Mas nem tudo é cor de rosa. Por já manter os aplicativos compilados na memória do aparelho, acaba por ocupar um espaço maior. Os aparelhos com armazenamento interno pequeno, talvez deixem seus proprietários decepcionados (isso só o tempo dirá). Haverá ainda menos aplicativos rodando ao mesmo tempo o que pode atrapalhar nossa tão útil multitarefa. Já  podemos entender porque o Dalvik foi utilizado desde o início,não é mesmo? Não? Então eu explico.

O primeiro dispositivo Android, o HTC Magic tinha uma capacidade de armazenamento muito baixa. E por isso, como o Dalvick compila no momento de uso dos aplicativosapenas o que é necessário naquele momento, haveria uma economia de espaço.

Agora quando falamos de dispositivos de alto desempenho, provavelmente não veremos muita diferença (mas eu posso estar errado).

Como mudar o meu Runtime de Dalvik para ART?

LEIA ANTES DE PROSSEGUIR: Seu aparelho irá demorar para reiniciar, pois TODOS os aplicativos serão compilados. Se mesmo depois de ter lido todo o texto anterior é porque não entendeu ainda o que é compilação  (dica: Google Search). O SHealth não funciona no modo ART (ao menos não até esta data de 24/11/2014). E SÓ PARA LEMBRAR, NÃO ME RESPONSABILIZO POR NENHUM  PROBLEMA QUE OCORRA EM DECORRÊNCIA DESTA MUDANÇA.

Inicialmente você terá que ativar as Opções do Desenvolvedor, indo nas configurações de seu aparelho e em seguida localizando em "sobreo Telefone", "Sobre o Aparelho", "Sobre o Dispositivo" (a denominação varia conforme o fabricante) e clicar várias vezes sobre o número de compilação até aparecer um popup dizendo que você se tornou um desenvolvedor.

Clíque em voltar e você verá uma nova área chamada "Opções do Desenvolvedor", "Opções de Desenvolvimento" (que também varia a denominação conforme o fabricante). Localize algo como "Selecionar Sistema de Tempo de Execução" ou algo parecido.