JVM和Dalvik和ART

首先我们要明确,这三个都是虚拟机。

虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机统。之所以需要虚拟机是因为字节码无法直接被CPU读懂,需要虚拟机做个翻译的工作。



**JVM**

JVM作为Sun公司出产的绝对可靠的虚拟机,是JAVA能称霸代码界的最主要原因。有JAVA基础的人都知道,JVM的作用就是为了适应不同的软硬件环境为JDK的编译充当解释转换的作用,如果我们不用IDE想要运行一串java代码:

那我们首先需要有jre(java开发环境,内置jvm)

然后通过Javac 编译.java文件代码 转换成.class文件(将java源文件转换成.class文件即java字节码)

接着通过java命令 执行通过。(通过jvm把java字节码转换成本地既期代码,当然如果你有elipse并且配置过path变量就不用这么麻烦,因为elipse自带jre)



**Dalvik**

Dalvik是谷歌为Android专门开发的虚拟机,目的和JVM一样都是为了适应不用的手机硬件而搭设的,不过和JVM不同的地方在于JVM是把JAVA字节码转换成本地机器代码,Dalvik则是把JAVA字节码转换成.dex文件(一种被压缩的可执行文件),.dex文件的有事就在于占用RAM小,并且每一个Dalvik虚拟机都对应独立的LINUX进程。这样即使在同时运行多个.dex文件的时候其中某一个崩溃了也不会影响其他的.dex文件。另外Dalvik比JVM还有一个优势是JIT优化(据说提升了5倍的编译速度)

此处可以很明显看出Dalvik和JVM的区别



**ART**

ART是谷歌与苹果的竞争过程中必经的一个优化产物,毕竟相对于苹果的直接编译运行,安卓中间多了一次解释编译运行,导致即使硬件环境配置再高也会有RAM占用过大手机卡频等现象,再加上Dalvik是每次.dex文件运行的时候都解释一遍的,所以即便主流的手机RAM越来越大但是仍然不够用,于是ART产生了。

ART的优势在于 程序安装的时候已经进行了预编译操作,所以虽然他的安装过程更慢耗时更久,但是占用的RAM却更小,运行更流畅。然而世界上并没有完美的东西,每一次的优化也只是在前一个的基础上做的更好,所以ART的缺点也很明显,一是兼容性太差,4.4推出和5.0正式替换dalvik的时间太短,普及性太低(大家想想天朝的我们从2.3.3过渡到现在的4.0耗时多久就知道了。。。),二是虽然运行时占用的RAM更小了几乎是Dalvik的一半,但是相对的预编译时占用的ROM就更多了,有得必有失嘛,相对安卓支持外置存储设备这个问题也就不要需要考虑了。所以Dalvik其实就像火锅店,想吃的时候需要我们自己拿菜来吃,ART就像快餐店 已经全部做好了,直接就可以拿来吃,显然大家的工作餐时间基本还是需要时间效率的。



**归纳一下**

JVM是第一代产品在所有支持JAVA编译的程序中都适用。

Dalvik是第二代产品,专门为Android手机做了适配和优化,在手机这个硬件领域比JVM更实用。

ART则是第三代产品,是谷歌为了对抗苹果而出现的,毕竟安卓和苹果比流畅性是内伤加硬伤,对Dalvik做了更高级的优化,提高了系统的效率,降低了内存占用率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值