Dalvik VM (Virtual Machine)

The development process is a standard one for Java developers: Java code is compiled into .JAR and .CLASS files. Google built a custom virtual machine to run these programs; it is called DALVIK (after one engineer’s favorite location in Iceland.) The DALVIK VM is designed especially for Android to run on embedded systems and work well in low power situations; it’s also tuned to the CPU attributes. The DALVIK VM creates a special file format (.DEX) that is created through build time post processing. The DEX files can be downloaded onto the mobile handsets and run.

Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included “dx” tool.

The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.

Source: Open Handset Alliance, OnLamp