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.