android应用程序运行在单独的一个Dalvik虚拟机内,Dalvik专门针对同时高效运行多个虚拟机进行了优化,因此android系统可以方便地实现对应用程序进行隔离。
Dalvik并未遵守jvm规范,两者也不兼容。jvm运行的是java字节码(.class文件),Dalvik运行的是其专有的dex(Dalvik Executable)文件。
DX工具将应用程序所有的.class文件编译成.dex文件,Dalvik运行.dex文件。
Dalvik虚拟机适应于移动终端上的特点:
1.专有的.dex文件把所有的.class文件整合到一个文件中,减少了.class文件中的冗余信息,提高运行性能
2.基于寄存器实现,而jvm等pc上的虚拟机大多是基于栈的。