Parlando delle novità di Android 4.4 dedicate agli sviluppatori, ho omesso – perché ancora non avevo idea della sua esistenza – un componente fondamentale: Google ha avviato la sperimentazione di ART, che potrebbe arrivare a sostituire la Dalvik VM per compilare il bytecode delle applicazioni “native” in Java del sistema operativo. La differenza sostanziale fra le due infrastrutture è il metodo di compilazione che passerebbe da Just-In-Time (JIT) ad Ahead-Of-Time (AOT). Cerco di spiegare cosa ciò significhi in termini semplici.

Trovo utile, a questo proposito, utilizzare una similitudine coi medicinali: il metodo JIT può essere paragonato all’aspirina – che dev’essere assunta al bisogno e per le fasi acute – mentre quello AOT è come un farmaco antibiotico da prendere per innalzare le difese immunitarie e sconfiggere un’infezione più duratura. Sono sicuro che medici, farmacisti e programmatori m’odieranno per la blasfemia… ma il discorso non è insensato. Dalvik VM compila appena prima dell’avvio delle app, ART inizia già durante la fase d’installazione.

Qual è la differenza, in termini di prestazioni? JIT garantisce l’esecuzione dello stesso codice su più dispositivi, AOT lo ottimizza per il singolo device. Trattandosi sempre di bytecode, che a grandi linee avevo illustrato riguardo alla programmazione in Java, i sorgenti sono comunque portabili: cambiano le tempistiche e i risultati. La Virtual Machine (VM) discrimina soprattutto fra le architetture – ovvero, ARM o x86 a 32-bit oppure a 64-bit – ma ART sfrutta un maggiore numero d’estensioni attive sul determinato processore.

ART, insomma, aumenterà percettibilmente il tempo necessario all’installazione delle app per velocizzarne le fasi d’avvio e migliorarne le prestazioni nell’utilizzo col proprio dispositivo — laddove Dalvik VM propone un codice più generico che dovrebbe essere eseguito allo stesso modo su qualunque device. Perché mai Google avrebbe bisogno di sostituire il compilatore? Un’ipotesi è l’introduzione dell’architettura a 64-bit, che a partire dal 2014 differenzierà le configurazioni hardware dei tablet e degli smartphone con Android.

Non significa che ARM a 64-bit non supporti la compilazione in JIT, bensì che Google voglia elevare il livello del sistema operativo — prima d’introdurre un’architettura con una maggiore potenza di calcolo. Con iOS il problema è stato relativo, perché Objective-C a differenza di Java produce delle applicazioni “native” al 100% e Apple le traduce in bitcode per Clang/LLVM che hanno caratteristiche molto diverse dall’ecosistema che è stato realizzato su Android. Dalvik VM, in sostanza, potrebbe essere insufficiente per dei 64-bit.

Ecco com’è possibile effettuare il passaggio e cosa accade sostituendo Dalvik VM con ART: navigando tra le impostazioni di KitKat, occorre posizionarsi nel menù dedicato agli sviluppatori e selezionare il runtime desiderato. Android 4.4 sarà riavviato e intraprenderà automaticamente la ricompilazione delle app installate — un processo che richiede molto tempo. Al momento, è difficile percepire un miglioramento delle prestazioni e il passaggio da un compilatore all’altro dovrebbe essere effettuato giusto per effettuare dei test.

Photo Credit: Paul Cutler via Photo Pin (CC)