ART - Novo Runtime para Android

A partir da versão 4.4 (KitKat) do Android, o Google apresentou o novo runtime que será utilizado nos tablets e celulares, o ART (Android Runtime) que irá substituir no futuro o Dalvik, utilizado atualmente nos dispositivos.
Os dispositivos com a versão 4.4 ou superior possuem os dois runtime instalados, o Dalvik e o ART, sendo que o Dalvik continua sendo o runtime padrão. Um dos motivos em manter os dois runtime nos dispositivos, é possibilitar que os desenvolvedores possam começar a utilização e os parceiros possam fornecer um avaliação do runtime.
Apesar de que as aplicações que rodam com Dalvik devem rodar com o ART, mesmo assim existem diferenças entre os runtime, e é preciso ficar atento nestas diferenças para obter o melhor resultado na utilização da aplicação. A tabela a seguir lista algumas das diferenças entre o Dalvik e o ART:
Dalvik
ART
Tipo de Compilação JIT (Just in Time) compilação dinâmica. A compilação ocorre no momento da execução. AOT (Ahead-of-time) . A compilação é feita no momento da instalação da aplicação.
Tempo de Instalação Mais rápido porque compila na execução. Mais lento devido a compilação que é feita no momento da instalação.
Tempo de Inicialização da Aplicação Mais lento devido a compilação e interpretação JIT. Mais rápido devido à compilação AOT.
Espaço de Armazenamento Menor. Maior, com precompilação binária.
Espaço de Memória Maior devido ao cache do código JIT. Menor.

Além das diferenças listadas na tabela, o ART apresenta mais algumas características importantes para os desenvolvedores.
Os desenvolvedores contam hoje com uma ferramenta de visualização o TraceView, que exibe utilizando uma amostragem das informações, o que está acontecendo durante a execução da aplicação. Esta forma de amostragem faz com que a execução da aplicação fique muito lenta, afetando o desempenho. Com o ART está sendo desenvolvida uma nova forma de acompanhar as informações durante a execução de forma dedicada, de modo que não afete o desempenho da aplicação.
Além da ferramenta de visualização o ART possui mais mensagens de exceção do que o Dalvik com mais informações, e que podem ser utilizadas no desenvolvimento de aplicações.
Outra diferença entre o ART e o Dalvik é a área reservada para o armazenamento da pilha (stack) para códigos nativos (C/C++) e código Java. No caso do Dalvik a pilha possui área separada para os códigos nativos e Java e o espaço reservado é de 1MB para código nativo e 32KB para código Java. No caso do ART a área reservada para a pilha (stack) é a mesma tanto para os códigos nativos como para o Java, e o espaço reservado é praticamente o mesmo que para o Dalvik.
Para escolher qual compilador utilizar em um dispositivo Android com versão 4.4 ou superior acesse SETTINGS - DEVELOPER OPTIONS - SELECT RUNTIME.
dalvik_art
IMPORTANTE: O runtime Dalvik deve ser escolhido como o padrão nos dispositivos para não correr o risco de danificar as implementações Android ou aplicações de terceiros.