Che cos'è Dalvik? Sentiamo che questa parola viene lanciata molto su Internet quando si parla di Android e dei suoi meccanismi interni. Sebbene non ci sia una semplice spiegazione che possiamo dare in pochi paragrafi, possiamo coprire le basi e indicarti la giusta direzione se devi nutrire il tuo lato nerd. In parole povere, Dalvik è una macchina virtuale che esegue applicazioni e codice scritti in Java. Un compilatore Java standard trasforma il codice sorgente (scritto come file di testo) in Bytecode, quindi compilato in un file.dex che la VM Dalvik può leggere e utilizzare. In sostanza, i file di classe vengono convertiti in file.dex (molto simili a un file jar se si utilizzava la VM Java standard) e quindi letti ed eseguiti dalla macchina virtuale Dalvik. I dati duplicati utilizzati nei file di classe vengono inclusi solo una volta nell'output.dex, il che consente di risparmiare spazio e di ridurre i costi di gestione. I file eseguibili possono essere nuovamente modificati quando si installa un'applicazione per rendere le cose ancora più ottimizzate per i dispositivi mobili. Cose come lo scambio di ordini di byte e il collegamento della struttura dei dati e delle librerie di funzioni in linea rendono i file più piccoli e funzionano meglio sui nostri dispositivi. La VM Dalvik è stata scritta da zero con Android in mente.
Ancora confuso? Non sentirti male, i discorsi di programmazione geek hanno di solito quell'effetto. Pensala in questo modo: quando crei un'applicazione Java per il tuo computer, una Java Virtual Machine esegue l'output compilato del codice sorgente. Questo è il motivo per cui Java funziona praticamente su qualsiasi sistema operativo. Dalvik è una versione ottimizzata per dispositivi mobili di una Java Virtual Machine, costruita con il codice del progetto Apache Harmony, che è open-source e funziona meglio di una normale VM Java sul nostro hardware limitato, progettata in modo da poter eseguire più di una istanza della VM alla volta, ovvero multitasking. Poiché Dalvik è open source, è stato anche portato su altri sistemi operativi, come quello sul BlackBerry PlayBook. È dannatamente complicato, dannatamente bello e Oracle (la società che ha acquistato Java da Sun) lo odia.
Android usa Dalvik perché mentre la licenza per la Java Virtual Machine standard è GPL2 (gratuita e open-source), se collocata in un dispositivo mobile e usando Java Micro Edition, non lo è. La grande disputa tra Google e Oracle è tutta incentrata su Dalvik. Google afferma che è stato scritto in un ambiente "clean room" senza utilizzare alcun codice Oracle e Oracle non è d'accordo. Sosteniamo di non averne idea, siamo solo contenti che funzioni così come è.