android运行时由两部分完成:android核心库和Dalvik虚拟机。
android使用java语言编写,并且每个java程序在java虚拟机上JVM运行,但是android系统是运行在移动设备上,并不使用java虚拟机JVM来运行。而是使用Dalvik VM。每个android应用程序都运行在单独的一个Dalvik虚拟机上内,这样也 方便了android系统对应用程序的隔离。
使用JVM就是使Java程序不受操作系用的束缚,理论上在任何操作系统中,子要有JVM就可运行java程序。
Dalvik VM实在android系统上运行android程序的虚拟机,执行文件格式-dex字节码来完成对象生命周期管理、堆栈管理、线程管理等重要功能。
因为用java语言来编写程序,我们容易错误的认为android程序使用的是JVM,其实不然,并且Dalvik VM不遵守JVM规范,两者也不兼容。
也可从两者的编译过程中看出不同:
JVM: .java——.class——.jar
Dalvik VM:.java——.class——.dex
从效率上看,Dalvik VM把.java文件编译成.class文件后,会对.class文件重构,使用这种方法大大提升了android系统的运行速度.