Da quando il 31 ottobre è stato lanciato KitKat il nuovo sistema operativo Android nella versione 4.4 abbiamo sentito parlare sempre più spesso di macchine virtuali Dalvik e ART.
Di cosa si tratta di preciso forse non è chiaro a tutti e quindi noi di TecnoAndroid cerchiamo di spiegarlo. Per capire la differenza tra Dalvik e ART bisogna innanzitutto capire cosa sia un ambiente di runtime o di esecuzione o tempo di esecuzione.
Per dirla in termini semplici, un ambiente di runtime comprende istruzioni software che vengono eseguite quando il programma è in esecuzione, sono una parte del codice di quel pezzo di software in particolare. Queste istruzioni praticamente traducono il proprio codice software nel codice che il computer è in grado di eseguire. Pertanto, tutti i linguaggi di programmazione richiedono una sorta di ambiente di runtime in grado di eseguire correttamente il codice scritto in quel linguaggio.
Android fa uso di una macchina virtuale come ambiente runtime per eseguire i file APK che costituiscono un’applicazione Android. Il vantaggio di utilizzare una macchina virtuale è duplice – in primo luogo, il codice di applicazione è isolato dal sistema operativo di base, in modo che se qualcosa dovesse andare storto, è contenuta in un ambiente isolato e non influenza il sistema operativo primario. E in secondo luogo, consente la compatibilità incrociata, cioè anche se l’applicazione è compilata su un’altra piattaforma (come un PC, come avviene di solito con lo sviluppo di applicazioni mobili), possono ancora essere eseguiti sulla piattaforma mobile utilizzando la macchina virtuale.
Per Android, la macchina virtuale basata sull’ambiente di runtime in uso finora è conosciuta come Dalvik Virtual Machine, che, sono sicuro che chiunque abbia mai scavato nei dettagli del sistema operativo, è più che familiare.
Perché usare una macchina virtuale?
Le macchine virtuali sono lente, non si può negare ciò, ma i vantaggi che comportano fa optare per un loro utilizzo.
- Le macchine virtuali forniscono un ambiente isolato per l’esecuzione del codice. Quindi, anche se l’applicazione contiene un pezzo di codice maligno che può danneggiare il sistema operativo di base, esso non influirà direttamente sui file di sistema, e quindi il sistema operativo di base sarà tenuto al sicuro da danneggiamenti. Il vantaggio su larga scala è una maggiore stabilità e affidabilità del sistema operativo.
- Gli APK delle app che vengono scaricati tramite Play Store (o da qualsiasi altra fonte) sono istruzioni non compilate che gli sviluppatori basano sulla macchina virtuale per compilare prima dell’esecuzione ed eseguire sul dispositivo. Ciò fornisce una maggiore compatibilità, se lo sviluppatore dovesse fornire il codice già compilato ed è stato compilato per un processore basato su Snapdragon, potrebbe non funzionare correttamente su un chip Tegra, per esempio. Quindi, questa compilazione sul dispositivo risolve questo problema.
Quindi, cos’è Dalvik, e perché è stato sostituito?
Dalvik è presente nell’OS Android fin dal principio nel 2007 e non è cambiato molto da allora, a parte il metodo di compilazione Just-In-Time (JIT), introdotto in Android 2.2 Froyo, che in sostanza compila in modo giusto le applicazioni che vengono lanciate o quando l’utente fornisce le istruzioni necessarie. È un miglioramento rispetto al precedente approccio dell’interprete convenzionale che compilava e caricava codice riga per riga, ma il lato negativo è un sovraccarico enorme quando l’app viene lanciata per la prima volta.
Questo perché il sistema ha bisogno di mettere insieme tutti i file necessari, compilare l’applicazione e caricarla nella RAM. Finché l’applicazione compilata rimane all’interno della RAM, continuerà a rispondere velocemente, ma quando si caricano più applicazioni e la RAM si esaurisce, la prima app aperta viene chiusa e, quindi, al successivo lancio, l’intero processo ricomincia. L’approccio ha senso su carta, e in effetti, ha lavorato bene fino ad ora per la piattaforma. Tuttavia, i dispositivi anziani con RAM limitata soffrono di più, poiché il ciclo di carico/scarico (avvio/blocco) continua più spesso, e quindi, il sistema rallenta in termini di reattività complessiva. Ecco dove la nuova macchina virtuale, ART, entra in gioco.
Che cosa è ART e in che modo migliora le cose?
ART, o Android RunTime è una nuova macchina virtuale sperimentale che Google ha introdotto con Android 4.4 KitKat come opzione per gli sviluppatori (con Dalvik ancora impostato come predefinito per ora). La differenza principale tra ART e Dalvik è l’approccio alla compilazione che entrambi impiegano – ART si avvale di un nuovo Ahead-Of-Time (AOT) concetto contrario al JIT di Dalvik, che raccoglie le applicazioni prima che esse vengano lanciate. Ciò significa che per la prima installazione ci vorrà più tempo, e le applicazioni occuperanno più spazio nella memoria interna, ma allo stesso tempo, dal momento che l’applicazione sarà completamente compilata appena installata, i tempi di lancio saranno molto più veloci. Allo stesso modo, dal momento che la compilazione avviene solo una volta al momento dell’installazione, il tasso di utilizzo del processore è più basso, il che si traduce in una migliore durata della batteria e delle prestazioni complessive.
Dalvik vs. ART – Confronto
Facciamo quindi un confronto tra le due macchine virtuali.
Dalvik |
ART |
Utilizza Just-In-Time (JIT) per la compilazione, che si traduce in minor consumo di spazio di archiviazione, ma tempi di caricamento maggiori |
Utilizza Ahead-Of-Time (AOT), che raccoglie le applicazioni quando sono installate, con tempi di caricamento più veloci e minor utilizzo del processore |
La Cache si accumula nel tempo, quindi i tempi di avvio sono più veloci |
La Cache è costruita al primo avvio, il riavvio del dispositivo quindi richiede molto più tempo |
Funziona meglio per i dispositivi con meno storage interno dato che lo spazio occupato è inferiore |
Consuma molto più spazio di archiviazione interno in quanto memorizza le applicazioni compilate in aggiunta alle APK |
È stabile e testata da tempo – è la macchina virtuale scelta dagli sviluppatori di app |
È altamente sperimentale e nuova – non ha un grande sostegno da parte degli sviluppatori di app |
Dunque ART è sperimentale e disponibile solo su dispositivi con chipset Snapdragon e sistema operativo Android 4.4 KitKat. Si può passare da Dalvik ad ART dalle opzioni Sviluppatore nascoste, se volete passare a tale macchina virtuale dovrete scegliere l’opzione e riavviare il dispositivo che potrebbe richiedere fino a mezz’ora. Tenete anche presente che alcune applicazioni potrebbero non funzionare correttamente.
Google ha reso ART disponibile con KitKat per gli sviluppatori e questo non significa che ART è pronto per l’uso attualmente. La sarà in futuro e non è adatto per l’uso quotidiano da parte dell’utente finale.
Per quanto riguarda i benefici di ART, ci sono notizie contrastanti. Per la maggior parte dei revisori, i dispositivi di test comprendono processori quad-core con più di 2 GB di RAM, che è più che sufficiente per installare e osservare i guadagni effettivi di velocità utilizzando ART. Ancora, gli utenti casuali indicano guadagni di oltre il 50% in velocità e più del 30% della durata della batteria. Altri ancora sostengono che è niente più che un effetto placebo.
In realtà, non si può dire ancora molto prima che diventi disponibile alle masse e perda l’etichetta di sperimentale. Ciò che si può dire con certezza è che ART è il futuro. Google vuole competere anche sui tempi di compilazione con iOS, la sua più grande controparte, e ART apre la strada su un altro campo di battaglia. Continueremo a vedere ART sempre di più e sempre in più dispositivi.