Dalvik est la machine virtuelle utilisée par Android. Elle est généralement considérée comme une machine virtuelle Java, bien que cela ne soit pas tout à fait exact. Elle utilise un modèle objet identique à celui de Java, et son modèle mémoire est également presque équivalent. Mais la VM dalvik est une VM basée sur les registres, par opposition aux VM Java, qui sont basées sur les piles.
Par conséquent, il utilise un bytecode complètement différent de celui de Java. Cependant, le SDK Android inclut le outil dx pour traduire le bytecode Java en bytecode dalvik, ce qui explique pourquoi vous êtes en mesure d'écrire des applications Android en Java.
Quand vous dites " dalvik-cache ", je suppose que vous voulez dire le /données/dalvik-cache que l'on trouve sur les appareils Android classiques. Lorsque vous installez une application sur Android, celui-ci effectue certaines modifications et optimisations sur le fichier dex de cette application (le fichier qui contient tout le bytecode dalvik de l'application). Il met ensuite en cache le fichier odex résultant ( dex optimisé ) dans le fichier /données/dalvik-cache afin de ne pas avoir à effectuer le processus d'optimisation à chaque fois qu'il charge une application.