Cos’è ART e come funziona

Giusto ieri sera vi avevo lasciati con una breve guida per provare ART sui vostri dispositivi Android (qui per l’articolo in questione).
Ok ma… che cos’è ART? E soprattutto, come funziona, cos’ha di diverso dal vecchio Dalvik?

Queste domande mi hanno portato a scrivere un articolo per spiegarvi meglio le differenze tra i due RunTime di Android.

android_4.4_art

Innanzitutto per chi non lo sapesse un runtime (system) è l’insieme delle componenti hardware e software di un sistema che permettono l’esecuzione di applicazioni, in poche parole quella parte del sistema che vi permette di utilizzare tutte le applicazioni, a partire da quelle di sistema, come ad esempio il dialer o la fotoccamera, a quelle che scaricate dal Play Store.

Fino alla versione 4.3 del robottino verde veniva utilizzato un particolare tipo di runtime chiamato Dalvik. Dalla versione 4.4 KitKat ne è stato introdotto un altro (attualmente attivabile come opzione per sviluppatori), ART appunto.

ART è un acronimo che sta per Android Run-Time (che fantasia eh??) e si differenzia dal Dalvik per come “maneggia” le applicazioni nelle varie fasi di installazione e esecuzione.
Innanzitutto il runtime attuale (Dalvik), utilizza un compilatore JIT (Just-In-Time) per interpretare il bytecode. In parole povere, le applicazioni sono compilate dagli sviluppatori solo parzialmente, il codice risultante poi viene dato in pasto ad un interprete presente in ogni device ogni volta che l’applicazione stessa viene avviata.
Questo meccanismo risulta poco efficiente dal punto di vista della velocità di esecuzione, risulta invece molto comodo in fatto di portabilità, poichè il bytecode può essere interpretato facilmente da architetture differenti.

ART si approcia in modo un po’ differente. Innanzitutto nel momento in cui un’applicazione viene installata, precompila il bytecode traducendolo in linguaggio macchina comprensibile direttamente dal device, sendendo l’applicazione quasi come “nativa”. Questo processo è chiamato AOT Compilation (Ahead-Of-Time Compilation).
In questo modo il sistema non avrà più bisogno di avviare una macchina virtuale per interpretare il codice (N.D.R.: mi sembra troppo una lezione di programmazione Java, tra Compilatore, Java Runtime, Java Virtual Machine e bytecode… del resto le app di Android sono scritte in Java 🙂 ), rendendo l’avvio delle applicazioni molto più rapido, così come l’esecuzione stessa.

[banner]

Beh, sembrerebbe proprio che questo ART abbia solo pregi, ma non è così.
Infatti questa “compilazione in più” comporta anche un sensibile aumento delle dimensioni delle app installate fino al 10-20% in più. Può sembrare tanto soprattutto se si pensano ad app pesanti e a telefoni entry level con poco spazio di archiviazione, ma bisogna ricordare che il codice “puro” senza i dati rappresenta solo una piccola percentuale dell’intero APK che si va a scaricare.
Prendiamo come esempio Google+. Scaricandola dal Play Store il pacchetto pesa ben 28/29Mb, ma l’eseguibile in sè occupa solo circa 7Mb di tutto il pacchetto, il resto sono i dati che permettono il corretto funzionamento dell’app stessa.

Infine l’utilizzo di ART dovrebbe comportare anche un minore utilizzo della batteria (il cosiddetto battery drain che tanto spaventa gli utilizzatori di smartphone), dovuto sempre al fatto che la JVM non deve interpretare tutte le volte il codice.

Insomma, questa nuova Runtime sembra promettere bene. Personalmente la sto testando da qualche giorno e, seppur sia ancora in fase beta, noto una grande stabilità (nessun crash e nessun lag). L’utilizzo della batteria mi sembra leggermente migliorato, ma per trarne le dovute conclusioni bisognerà aspettare ancora un paio di cicli completi della batteria. Per quanto riguarda l’apertura delle app ho notato un piccolo miglioramento, ma che potrebbe benissimo essere dovuto al cosiddetto “effetto placebo” (di fatto non ho mai fatto particolari test).

E per stasera è tutto! Concludo dicendo che per qualsiasi aggiornamento sull’argomento in questione vi basterà continuare a seguirmi, appena saprò qualcosa in più su ART pubblicherò subito un altro articolo e augurando buona Pasqua a tutti i lettori!

Enjoy!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.