Dalvik VM vs. ART (Android Runtime): impacto para os usuários finais?

22

Com o Nexus 5 (Android 4.4 KitKat), o Google enviou dois tempos de execução para executar aplicativos.

Selecione a opção Tempo de execução no Android 4.4 KitKat Dalvik e ART Runtimes no Android 4.4 KitKat

Quais são as diferenças entre Dalvik e ART para usuários finais? Como os usuários finais podem ser afetados por isso? Existe algum motivo específico para eu escolher o novo tempo de execução do ART?

Android Quesito
fonte
3
O fato de você precisar habilitar e pesquisar nas opções do desenvolvedor para encontrar essa configuração deve sugerir que ela não se destina aos usuários finais.
precisa
1
@DanHulme Bom argumento, mas os entusiastas de não desenvolvedores ainda brincam com as opções de desenvolvedor e até o usam para fins positivos de não desenvolvimento muitas vezes.
Android Quesito 11/11/2013
No que diz respeito à experiência do usuário, você só notará que a energia da bateria é economizada em grande medida, ... no entanto, você não poderá ver a diferença de velocidade ao mudar de Dalvik para ART.
Rahul Raina

Respostas:

26

Dalvik VM (Máquina Virtual) é a versão do Google de uma Java VM (na qual os aplicativos são executados). As VMs mantêm os aplicativos isolados e independentes do hardware e de outros aplicativos reais. Mas, para que isso funcione, a Dalvik precisa converter o chamado bytecode (projetado para máquina virtual) em código de máquina nativo. Para minimizar a penalidade de desempenho introduzida pelo conversor de código de bytecode para código nativo, é executado um processo chamado compilação Just-In-Time (JIT), que converte código de bytes quente, ou seja, frequentemente usado, em código nativo. 1

O ART (Android Runtime) é um substituto para o Dalvik que usa a compilação Antecipada (AOT), o que significa que seus aplicativos são compilados para um estado pronto para execução antes mesmo de serem iniciados. Isso geralmente é feito, no momento da instalação do aplicativo, tornando o processo de inicialização e uso muito mais rápido e suave. E como isso significa que a compilação é feita apenas uma vez, também é possível ter uma vida útil da bateria melhor.

Se o ART for melhor na perspectiva de desempenho e duração da bateria, devo começar a usá-lo?

Não. Se você fizer isso, poderá interromper aplicativos de terceiros. O Google enviou essa visualização da ART com o Android 4.4 para que os desenvolvedores testem seus aplicativos.

Nota lateral: a abordagem do Google com o ART é vencer o iOS (os aplicativos para iOS são nativos, com desempenho melhor mesmo nas especificações de hardware de última geração), mas não sei para onde ele está indo ... Outra fragmentação? Veja que os OEMs são livres para criar dispositivos usando um ou ambos . Embora a versão final não deva afetar a maioria dos aplicativos, ela não é 100% multiplataforma.

1 Observe que o JIT foi adicionado ao Dalvik no Android 2.2

Android Quesito
fonte
3
Talvez dois fatos sejam dignos de nota: o AOT da ART resulta em aplicativos usando 20 a 25% mais armazenamento em comparação com o DEX. Além disso, testes em um Nexus-5 que eu li não mostraram diferenças na velocidade subjetiva nem na resistência da bateria. Ambos certamente melhorarão, considerando que a ART no KitKat é apenas uma pré-visualização e verificação de compatibilidade dos desenvolvedores (que, por exemplo, o WhatsApp falhou). Então, segundo a conclusão de Sachin: ainda não é bom para os usuários finais.
11553 Izzy
2
Excelente resposta. Tomei a liberdade de melhorar um pouco. Mas não concordo com o último parágrafo: o ART não aumenta a fragmentação: se o ART é considerado pronto para produção, não importa se o seu aplicativo é executado pelo Dalvik ou pelo ART, ambos usam o mesmo formato .dex como ponto de partida. Somente esse ART AOT compila o .dex no código nativo.
Flow