Originariamente inviato da
Crotan
Ciao, partiamo dal concetto di macchina virtuale Java. La JVM (Java Virtual Machine) esegue del codice, ottenuto dalla compilazione di un sorgente in Java, chiamato bytecode. Nel caso di Android la Java Virtual Machine prende il nome di Dalvik ed esegue un linguaggio chiamato DEX (Dalvik EXecutable), che è sostanzialmente bytecode (contenuto in file .dex)) con delle ottimizzazioni. La differenza tra la JVM e la DVM sta proprio in questo, ossia nel linguaggio interpreato. Il DEX, quindi, è stato ottimizzato per essere più veloce sui device mobili. Senza dilungarmi troppo in ulteriori dettagli, ti dico che il nuovo compilatore ART interpreta il codice delle applicazioni in fase di installazione e non ad ogni esecuzione, come fa la Dalvik! Questo si traduce in prestazioni maggiori, comparabili a quelle ottenute dall'elaborazione del codice nativo (eseguito direttamente dal processore). Il linguaggio rimane sempre il Java (sarebbe da pazzi abbandonarlo), quello che cambio è il modo in cui questo viene interpretato dalla macchina.