Dalvik VM vs. ART (Android Runtime): impatto per gli utenti finali?


22

Con Nexus 5 (Android 4.4 KitKat), Google ha distribuito due runtime per eseguire app.

Seleziona l'opzione Runtime in Android 4.4 KitKat Runtime di Dalvik e ART in Android 4.4 KitKat

Quali sono le differenze tra Dalvik e ART per gli utenti finali? Come possono essere interessati gli utenti finali? C'è un motivo specifico per cui dovrei scegliere il nuovo runtime ART?


3
Il fatto che devi abilitare e cercare tra le opzioni di sviluppo per trovare questa impostazione dovrebbe essere un suggerimento che non è destinato agli utenti finali.
Dan Hulme,

1
@DanHulme È interessante notare che gli appassionati non sviluppatori giocano con le opzioni sviluppatore e lo usano anche per scopi positivi non di sviluppo molte volte.
Android Quesito,

Per quanto riguarda l'esperienza dell'utente, noterai solo che la carica della batteria viene risparmiata in larga misura, ... tuttavia non sarai in grado di vedere la differenza di velocità mentre passi da Dalvik a ART.
Rahul Raina,

Risposte:


26

Dalvik VM (Virtual Machine) è la versione di Google di una VM Java (su cui vengono eseguite le app). Le macchine virtuali mantengono le app isolate e indipendenti dall'hardware reale e da altre app. Ma, perché funzioni, Dalvik deve convertire il cosiddetto bytecode (progettato per la macchina virtuale) in codice macchina nativo. Al fine di ridurre al minimo la penalità prestazionale introdotta dalla conversione del bytecode in codice nativo, viene eseguito un processo chiamato compilazione Just-In-Time (JIT), che converte il bytecode caldo, ovvero spesso utilizzato, in codice nativo. 1

ART (Android Runtime) è un sostituto di Dalvik che utilizza la compilazione Ahead-Of-Time (AOT), il che significa che le tue app vengono compilate in uno stato pronto per l'esecuzione prima ancora di avviarle. Di solito questo viene fatto, al momento dell'installazione dell'app, rendendo il processo di avvio e utilizzo molto più rapido e fluido. E poiché ciò significa che la compilazione viene eseguita una sola volta, potresti anche vedere una migliore durata della batteria.

Se ART è migliore in termini di prestazioni e durata della batteria, dovrei iniziare a usarlo?

No. Se lo fai, potresti rompere le app di terze parti. Google ha distribuito questa anteprima ART con Android 4.4 per consentire agli sviluppatori di testare le loro app su di esso.

Nota a margine: l'approccio di Google con ART è quello di battere iOS (le app iOS sono native quindi funzionano meglio anche con specifiche hardware di fascia bassa), ma non so dove stia andando ... Un'altra frammentazione? Vedi gli OEM sono liberi di costruire dispositivi usando uno o entrambi . Mentre la versione finale non dovrebbe interessare la maggior parte delle app, ma non è una cosa multipiattaforma al 100%.

1 Nota che JIT è stato aggiunto a Dalvik in Android 2.2


3
Forse vale la pena notare due fatti: AOT di ART risulta in app che utilizzano il 20..25% di spazio in più rispetto a DEX. Inoltre i test su un Nexus-5 che ho letto non hanno mostrato differenze nella velocità soggettiva né nella durata della batteria. Entrambi certamente miglioreranno, considerando che ART in KitKat è solo un'anteprima degli sviluppatori e un controllo di compatibilità (che ad esempio WhatsApp ha fallito). Quindi secondo la conclusione di Sachin: non è ancora buono per gli utenti finali.
Izzy

2
Risposta eccellente. Mi sono preso la libertà di migliorarlo un po '. Ma non sono d'accordo con l'ultimo paragrafo: ART non aumenta la frammentazione: se ART è considerato pronto per la produzione, non dovrebbe importare se la tua app è gestita da Dalvik o ART, entrambi usano lo stesso formato .dex come punto di partenza. Solo che ART AOT compila il .dex in codice nativo.
Flusso
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.