前序:
要是没有发生这么一件事,也不会有DVM的。之前Google一直用的都是JVM,本来也没啥事情,可JVM是Sun公司开发的,你用别人的东西又不交银子不打招呼,也难怪人家不乐意,所以啊,这Sun公司呢 就一直跟Google官司不断,就告别人侵权,要求赔偿。赔偿就赔偿嘛,你别乱开价啊,虽然杂家有银子,但也得合理对不,三五八块的还是没问题的对嘛!你要求别人给你2000w美金还限制人家只能使用2年,关键你还要别人道歉,典型的抢钱又踩脸,Google又不是SB,要是实力悬殊就认了,但是杂家还是不怂的,肯定不愿意啊,所以两家就一直争争吵吵。
但是Google心里郁闷啊,就下定决心对自己,说,好,你不让我用,我自己开发一个。所以DVM就产生了。但是凭空开发一个新玩意出来哪有这么简单,肯定要“借鉴”人家的嘛,很正常对不对!在国内这种“借鉴”多着去了,也都没啥事情,为毛你们就不能安安静静的搞点技术呢。
这时候轮到Sun公司心里不痛快的,哪有这么便宜的事,还是要打官司。然后,Sun公司被Oracle公司收购,Java商标从此正式归Oracle所有。卧 槽,这Oracle也是叼的不行,居然拿之前的官司继续跟Google纠缠,所谓的理由是DVM里有9行代码抄袭,小歌都郁闷了,尼 玛,几百万行的代码,怎么发现的,没事干还是纯粹找茬,然后继续申诉。至于结果,好像是Google赢了。不扯了,进入正文。
正文:
JVM:(Java Virtual Machine) Java虚拟机
DVM:(Dalvik Virtual Machine) Dalvik虚拟机
JVM .Java----->.class----->.jar
运行在内存的 栈(栈是内存当中特殊的数据结构)
DVM .java----->.class------>.dex-----(加上其它资源文件)---->apk
运行在CPU的 寄存器
不废话,先看图===>>>
区别还是很明显的:
JVM编译后生成的是.class文件 最后.jar包
而DVM,多了一步.dex文件,最后打包apk。
所以JVM执行的是.class文件,而DVM执行的是.dex文件。
除此之外呢
JVM:里含有多个.class文件,每个.class文件都包含文件头,这样IO操作效率低。
但是DVM中,看不到.class文件了,一个都没看到,这是因为dex工具,去掉了app里所有.class文件的冗余信息,再整合到.dex文件中,减少了IO的操作,提高了查找速度。同时你会发现就一个.dex文件,是比较大的。
反馈:
更多请关注小歌,小歌保证每周一篇技术性文章,给枯燥之余来点芬芳。
CSDN:http://write.blog.csdn.net/postlist
github: https://github.com/ITtrap
QQ: 2632545852
Email: xuchen1009@gmail.com
版权声明:本文为博主原创文章,如有雷同纯属巧合。转载请附上链接!3q!!!
�
网友评论