Emulatore Android super veloce grazie a Intel
Intel Hardware Accelerated Execution Manager (HAXM) è il nome di uno dei tool più apprezzati da chi sviluppa applicazioni Android. Si tratta di un componente che si aggancia ad Android Virtual Device, il software di emulazione fornito direttamente da Google, e consente lesecuzione di Android x86 tramite le istruzioni di virtualizzazione VT-x presenti nelle CPU Intel immesse sul mercato negli ultimi anni. Il supporto è stato introdotto con ADT versione 17, con le immagini di Android 2.3 e Android 4.0.3, ed è stato velocemente migliorato fino a supportare la recente release di Android 5.0 Lollipop.
Android, come molti sapranno, è un sistema operativo basato su kernel Linux e userland Java. La virtual machine Java (Dalvik o ART, a seconda della versione di Android) consente al sistema di rimanere sostanzialmente agnostico rispetto alla microarchitettura della CPU, mantenendo quindi un ottimo grado di compatibilità delle Apps tra le piattaforme supportate: ARM, Intel x86 e MIPS. Fanno eccezione le applicazioni sviluppate con Android NDK, che includono al loro interno delle shared library in codice macchina, compilate direttamente da C e C++, e che devono essere fornite in copia multipla dallo sviluppatore per coprire tutte le architetture supportate.
L'emulatore ufficiale Android, basato sul noto software QEMU, di base si presenta in una modalità "Full Emulation" nella quale vengono interpretate e tradotte le singole istruzioni macchina, penalizzando fortemente le performance e rendendo difficoltoso lo sviluppo ed il testing di applicazioni Android.
Grazie all'uso di una System Image di Android specificamente preparata da Intel, e all'uso del componente HAXM, è possibile forzare QEMU a funzionare in modalità "Virtualizzata" bypassando quindi la traduzione delle singole istruzioni e lavorando invece in modo molto simile a quanto accade in prodotti come VMware o VirtualBox. A questo si aggiunge anche l'accelerazione grafica tramite OpenGL, che sgrava l'emulatore dal compito di renderizzare la grafica delegando i comandi di disegno direttamente alla GPU del sistema Host.
I risultati in termini di performance sono immediatamente evidenti fin dal primo boot della macchina emulata.
Come si può vedere dal grafico, durante le prime fasi di avvio, l'aumento di velocità è evidente e restituisce all'utente una sensazione di usabilità molto superiore rispetto all'emulatore classico. Procedendo con test sintetici, che stressano maggiormente la CPU, i risultati sono sicuramente degni di nota:
L'incremento di prestazioni è evidente ad occhio nudo e varia da un minimo di 4x fino a 60x e oltre, superando in velocità anche i device reali di fascia alta. Il rovescio della medaglia è la compatibilità con le sole CPU Intel dotate delle opportune caratteristiche tecniche, ma è sicuramente un fattore da tenere in considerazione in fase di acquisto di un nuovo computer da parte di sviluppatori Android. Per ulteriori informazioni su Intel HAXM si rimanda alle pagine ufficiali di documentazione disponibili a questo indirizzo.