Android sin dagli albori per l’esecuzione dei processi ha utilizzato la Dalvik VM (Dalvik Virtual Machine), la Dalvik, creata da Dan Bornstein, è presente in Android dalla versione Cupcake 1.5 e fu concepita per dispositivi con un quantitativo limitato di memoria disponibile. La caratteristica principale della Dalvik è la compilazione JIT (Just-In-Time). È passato del tempo ed oggi scopriremo la differenza fra ART e Dalvik VM i due runtime di Android.
Per capire cos’è la compilazione cercherò di fare una breve spiegazione di quelli che sono i linguaggi di programmazione: il processore è in grado di elaborare soltanto istruzioni scritte in linguaggio macchina, detto anche codice macchina, infatti quando si scrive un programma con un qualsiasi altro linguaggio che sia Java, C# o C++, al momento della compilazione il compilatore si occupa di tradurre quel determinato linguaggio utilizzato in codice macchina, la compilazione di un’applicazione richiede non poche risorse da parte del processore.
Come dicevo la Dalvik utilizza la compilazione JIT, questo tipo di compilazione funziona in questo modo:
- Si scarica un file .apk dal Playstore o da un qualsiasi store
- Una volta installato si crea un file .dex contenente il bytecode (il bytecode è un linguaggio intermedio più astratto tra il linguaggio macchina e il linguaggio di programmazione)
- Durante l’esecuzione di un programma la Dalvik si occupa di tradurre il bytecode in linguaggio macchina così da divenire eseguibile.
- Una volta terminata l’operazione il codice tradotto viene perso e alla prossima esecuzione del programma si ricomincia dal punto 1.
Un lato positivo della compilazione JIT è che non richiede una grande quantità in termini di memoria del dispositivo. C’è da dire, però, che la compilazione in fase d’esecuzione, sforzando il processore, ne limita l’autonomia in termini di batteria per il dispositivo.
Questa soluzione è rimasta pressoché invariata nel corso degli anni fino all’introduzione di una nuova runtime destinata a prendere il posto della Dalvik: ART.
Dalla versione 4.4 KitKat è stata introdotta una nuova runtime chiamata ART (Android Run Time) in via del tutto sperimentale, difatti per attivarla bisogna accedere al menu segreto delle opzioni sviluppatori e diventata nella versione 5.0 Lollipop la runtime predefinita.
Come la Dalvik anche ART ha bisogno di compilare il codice contenuto nel file .apk dopo la sua installazione ma affronta l’argomento utilizzando un approccio AOT (Ahead-of-Time) :
- Si scarica un file .apk dal Playstore o da un qualsiasi store compatibile
- Al momento dell’installazione l’applicazione viene anche compilata creando un file .ELF eseguibile
- Una volta avviata l’applicazione il codice sarà già pronto per essere eseguito e al termine dell’esecuzione rimarrà tale.
ART ha moltissimi vantaggi rispetto alla Dalvik in quanto, non dovendo compilare ogni volta il file .DEX, l’esecuzione di un applicazione e il sistema operativo stesso risulterà più fluido e performante rispetto a prima, dato che il processore sarà occupato solo dall’esecuzione e non dalla compilazione.
Oltre a maggiori prestazioni l’autonomia stessa del dispositivo ne gioverà visto il minor utilizzo della CPU durante l’esecuzione. Naturalmente le applicazioni create precedentemente partiranno comunque visto, che il bytecode d’ingresso è lo stesso sia per ART che per la Dalvik anche se non si avranno comunque buone prestazioni e c’è il rischio di crash come successe con l’ultima versione di Whatsapp prima che l’aggiornassero per un esecuzione sotto runtime ART.
Come ogni cosa anche ART ha i suoi punti deboli che risiedono nella lentezza durante l’installazione, visto che è comprensiva di compilazione e nella memoria occupata dall’applicazione che risulterà maggiore rispetto all’utilizzo della dalvik.
Lascia un commento