Role of the Dalvik Virtual Machine The Role of the DVM in Android includes: Optimizing the Virtual Machine for memory, battery life, and performance. Conversion of class files into . dex file through Dex compiler that runs on Dalvik VM.
The Dalvik Virtual Machine (DVM) is an android virtual machine optimized for mobile devices. It optimizes the virtual machine for memory, battery life and performance. Dalvik is a name of a town in Iceland. The Dalvik VM was written by Dan Bornstein.
The dispatcher or scheduler in the android OS is responsible for handling these 10 processes....which is why we have android activity life cycle. You need DVM to maintain the running state of each process(each app).
Dalvik is a discontinued process virtual machine (VM) in Android operating system that executes applications written for Android. (Dalvik bytecode format is still used as a distribution format, but no longer at runtime in newer Android versions.)
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 optimised 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.
Also have a look at What is... The Dalvik Virtual Machine for detailed description about DVM.
The Dalvik virtual machine is built specifically for Android. It was built to address the battery life and processing power problems, and it is free.
We are using Dalvik VM instead of Java Virtual Machine (JVM) because the Java compiler, the Java tools are free, but the JVM is not free, so the Android developers from Google have made their own virtual machine, and made it as free.
A virtual machine is necessary because the virtual machine helps in debugging, as a virtual computer so that my applications can run different devices the same way
A .java
file is given to the java compiler (javac
) to generate the .class
file.
All .class
files are given to dx
tool to generate a single dex
file.
The dex
file is given to the Dalvik VM to generate the final machine code.
The final machine code is given to the CPU to execute.
All apk's basic source code is in java language . When you build this project all .java files get converted to .class now the dx tool of adk converts all .class files to classes.dex file .And this classes.dex file is executed on dalvik virtual machine.
For more info on dalvik virtual machine: http://www.slideshare.net/jserv/understanding-the-dalvik-virtual-machine
Dalvik virtual machine is intended to run multiple VMs at a time . So every app runs in its own process, with its own instance of the Dalvik virtual machine as said by @sahilMahajanMj .
And this classes.dex file is further optimized to odex file and saved in /dalvik/dalvik-cache
To know more about odex click this .
If you want to know why DVM for android why not JVM click this
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With