JVM和Dalvik虚拟机精炼详解

PS:涉及到了Android底层这里,多比比两句,普及一下:

1)Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》中。他将外表像人的机器人取名为Android

2)Android标志是一个全身绿色的机器人,颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象征;

3)Android的标志是由Ascender公司设计的,其中的文字使用了Ascender公司专门制作的称之为“Google Droid”的字体。


—————————————————我是Android科普分隔线————————————————

一、前期基础知识储备

(1)什么是JVM?

JVM—Java VirtualMechinal,就是Java虚拟机。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。

Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件——具体为:Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。

(2)什么是Dalvik虚拟机?

Dalvik虚拟机独属于Android系统,Dalvik虚拟机包含了一整套的Android运行环境虚拟机,每个APP应用程序都会分配Dalvik虚拟机来保证相互之间不受干扰,并保持独立。它的特点是在运行时编译。打个比方,就好比餐馆老板娘炒好了一大锅的粉,顾客没上门的时候,它们在锅里存着,只有在顾客上门的时候,才把粉装在碗里。

其实二者实现的功能作用差不多,但是我们必须注意的是:Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,与jvm并不兼容;而且二者还有一些具体的关键性的差别。

二、两个虚拟机具体的区别

以上这张表详细的说明了二者的区别,读者注意标注的两个区别是二者最大的不同:

  • Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式dex(体积更小)。
  • 在Java SE程序中的Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件,而后Java虚拟机会从相应的class文件和JAR文 件中获取相应的字节码;Android应用虽然也是使用Java语言进行编程,但是在编译成class文件后,还会通过一个工具(dx)将应用所有的 class文件转换成一个dex文件,而后Dalvik虚拟机会从其中读取指令和数据。

————————————————————我是分隔线————————————————————

三、Dalvik虚拟机与ART虚拟机

既然涉及到了Dalvik虚拟机,那么这里就展开了稍微讲一下,感兴趣的读者可以继续往下阅读。

(1)Dalvik虚拟机

我们来看一张讲解Android架构的经典图:


它将Android大致分为了四层:Linux内核层,库文件和运行时,Framework层,应用层。而Dalvik虚拟机就处于运行时这一层,它是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统——比如智能手机和谷歌现在正在开发的可穿戴设备

(2)ART虚拟机

Android 4.4(2013年7月)发布了一个ART模式,准备用来替换掉之前一直使用的Dalvik虚拟机。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time,JIT)转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。

在打个比方,另外一家粉店的老板,和上一家的老板娘不同,他不是炒好粉之后,就放在锅里不动,被动的等待顾客上门,而是在顾客上门之前,就将粉一碗一碗的装好,等到用户来付款之后就可以直接拿走,速度更快,没有装碗的步骤。但是,这样也会导致一些问题,比如装好之后顾客没有那么快上门,那么装碗的粉就会冷掉,甚至上门的顾客没有那么多,装碗的粉的处理也是一个问题,由此,也引出了ART的优缺点:

优点:①系统性能的显著提升;②应用启动更快、运行更快、体验更流畅、触感反馈更及时;③更长的电池续航能力;④支持更低的硬件。

缺点:①机器码占用的存储空间更大,字节码变为机器码之后,可能会增加10%-20%(不过在应用包中,可执行的代码常常只是一部分;②应用的安装时间会变长(安装时间变长这一点,使用千元机的用户可以明显感知到)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值