android应用程序是需要运行时环境支持,然后运行在设备上。在andriod4.2之前的版本,android使用的运行时环境是dalvik,在android4.2开始测试全新的运行时环境art。下面简单介绍一下这两个虚拟机。
Dalvik
Dalvik是Google公司自己设计用于Android平台的Java虚拟机。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。android应用程序运行在单独的一个Dalvik虚拟机内,Dalvik专门针对同时高效运行多个虚拟机进行了优化,因此android系统可以方便地实现对应用程序进行隔离。
熟悉java开发的都知道,java文件会被编译成class文件,同样dalvik也会先将java文件编译成class文件,但是由于dalvik并没有遵守jvm规范,是为了android系统而优化的。所以dalvik会继续讲class文件编译成.dex文件,然后包装成为.apk文件,作为android运行的应用。
Dalvik虚拟机适应于移动终端上的特点:
1.专有的.dex文件把所有的.class文件整合到一个文件中,减少了.class文件中的冗余信息,提高运行性能
2.基于寄存器实现,而jvm等pc上的虚拟机大多是基于栈的
ART
Dalvik虚拟机在运行apk的时候,每次运行都需要先把apk翻译成机器认识的字节码,由于每次都会翻译所以造成了android系统的运行效率慢。而ART采用了在安装的时候一次翻译成字节码文件,以后使用的时候不需要再翻译,从而提高了程序的运行效率,这个是我认为最大的区别,下面给个链接介绍的详细一些http://www.evolife.cn/html/2013/73985.html。
由于本人不是做android的,所以写的难免会有错误。