又到了一年高考的时候了呢。 文章开始之前,ITHome(IT之家)首先为高考考生金榜的题名祈祷~
到了这个时候,编辑就会想起自己高三的时间和高考的经历。 我真的忘不了那段时间。 说到高三的生活,很多同学可能会喜欢桌子上堆着厚厚的书,黑板上的课程和高考倒计时,还有可能再也没有机会和你在同一个教室上课了,不敢长期表白的女生。
但是,要说对当时的高三学生来说,编辑印象最深的是什么,我想编辑大概就是那台学习机了。
从当年的标准来看,该机的配置还是主流,包括1GHz处理器、512MB内存、8GB存储空间、分辨率为800*600的8英寸电阻屏、安卓2.3.6系统。
这个时候,读者可能会吐槽。 小编你应该一辈子单身! 高三有很多了不起的人和事。 这么多年了,你只记得你的学习机。
嗯,是的。 你可能不知道,全班同学用手机偷偷玩的时候,能在桌子上堂堂正正地玩安卓设备,感觉很爽。
但是,从今天来看,那台机器的体验可能不好。 首先,在阻力屏上,操作可能需要加一点力。 另外,我总是觉得那个系统很棘手。 使用以前安卓系统的读者可能知道这种感觉。 不是卡片,而是今天类似安卓系统的程序一点一点打开,操作体验像线一样流畅。
为什么当时的安卓系统没有现在这样顺畅呢? 原因之一是当时设备的硬件配置没有现在这样好,但今天,让我们从操作系统的角度来改变研究这个问题的方向。 众所周知,Android APP应用程序在虚拟机上运行。 那么,今天ITHome(IT之家)将谈论这台虚拟机。
虚拟机在安卓中的作用是什么? 当然,就是执行安卓APP。 对操作系统来说,APP非常重要。 想想我们的日常生活。 几乎每天都少不了APP。 早上起床的时候,需要闹钟APP。 与家人和朋友交流时,需要即时通讯工具。 白天看开心的东西,中午吃好吃的东西,要记录和分享它,需要相机APP。 所以,测量操作系统。 一个重要指标是该平台所用的APP应用的数量和质量。 像yedwl家一样,基础很牢固,但是没有砖头,最终盖不了这个房子。
安卓诞生之初,上面挂着强者的圈。 Windows Mobile和塞班岛就像白天一样,iOS的发展形态很棒。 为了在激烈的竞争中脱颖而出,吸引越来越多的开发者,安卓选择了JAVA作为其APP应用程序的编程语言。
之所以选择JAVA,是因为这种编程语言已经为很多开发人员所熟知,而且当开发人员选择为Android开发APP应用程序时,他们面临的入门门槛非常低。
另外,JAVA具有跨平台的特性,与iPhone不同,搭载安卓系统的手机像星星一样多,它们搭载了不同品牌不同型号的处理器。 编程语言广泛支持平台,意味着安卓系统可以自由选择硬件。
开发者使用JAVA语言在IDE中为Android平台编写的代码称为源代码。 这个源代码是人类能理解的语言。 这个语言人类能理解,但机器不能理解。 对意大利人说:“,对美国人说
所以,需要把源代码翻译成机器能理解的机器码。 但是,这里发生了问题。 运行安卓系统的硬件是五花八门,这款手机可能配备了高通处理器。 那个手机可能搭载了英特尔的处理器。 你用源代码翻译的机器码,高通处理器能理解。 如果他运行,无法理解英特尔处理器,他就会罢工。
没关系。 你可以先把源代码翻译成字节码。 字节码是中间代码,不能直接与手机硬件层交互,但被安卓系统中的虚拟机理解。 当Android系统的虚拟机看到字节码时,它会将字节码翻译成不同硬件可以理解的机器码,具体取决于设备的硬件。
在Android 4.4之前,Android系统将名为Dalvik的虚拟机用作隐式棒球。 当jadbg在手机上安装APP时,APP代码以字节码存储,每次冷启动APP时,Dalvik虚拟机都会将字节码翻译成机器码,传递给硬件执行。 Dalvik虚拟机是一个非常勤奋的男人,不怕麻烦。 每次关闭APP应用程序,然后再次冷启动时,Dalvik虚拟机都会再次重复将字节码翻译为机器码的操作。
所以,每次冷启动APP时都必须重新编译。 编译的时候请等待,或者看安卓系统的视频,或者关掉手机。
Dalvik虚拟机的辛苦让我很感动,但是我们不想每次启动APP应用程序都等那么几秒或几分钟,所以Dalvik,你是个好人,但我们不合适。 做朋友吧。 友谊会持续很久。
时代在前进,技术在进步。 2013年,Android 4.4带来了——ART虚拟机,取代了Dalvik虚拟机。
所有ART都称为Android Runtime,翻译成中文就是Android运行时。 这个名字起得很巧。 因为英语中的“ART”有“艺术”的意思。
与Dalvik虚拟机一样,ART虚拟机的作用是将字节码翻译成机器码,但工作方式不同,ART虚拟机明显比责备Dalvik虚拟机更聪明。 Dalvik虚拟机的做法是由您安装
一个应用时,它对字节码不做处理,jadbg启动应用时,它才将字节码编译成机器码,这个我们前面讲过,而ART虚拟机的做法是什么呢?早在你安装应用时,它就将字节码编译为机器码,此后jadbg启动一个应用时,虚拟机无需对它重新进行编译,只要直接运行已经编译过的机器码即可,因此这时,你就可以更快地冷启动一个应用。
引援CSDN里的大神举的一个例子,Dalvik虚拟机就像是折叠自行车,想把它骑走你得先组装,ART虚拟机则相当于组装好的自行车,什么事儿也不用费,骑上了直接走人。
不过,任何事物都有它的两面性,ART不是完美无缺,Dalvik也不是一无是处。
通常情况下,机器码所占的存储空间会比字节码要大一点,你在Dalvik模式下安装一个应用,它所占的空间是50M,那在ART模式安装同样的应用,它所占的空间可能就是70M。
另外,在你ART模式下安装一个应用时,这个应用的字节码要被编译成机器码,这个编译需要一个过程,会花费一些时间,而你在Dalvik模式下安装一个应用时,其字节码并不需要被编译成机器码,因此,你在ART模式下安装应用更费时间,在Dalvik模式下安装应用则更省时间。
一句话概括,ART的路子无非就是和以空间换时间和时间转移。即通过直接运行占用存储空间更大但更高效的机器码来节约时间,和将打开应用所需的时间转移到安装应用这一步。
也许它们的缺点和优点并不是绝对的,我们可以试着把Dalvik虚拟机和ART虚拟机放在特定的历史环境中。
在Android使用Dalvik虚拟机的那个时代,安卓设备用于存储应用程序的空间往往很小,所以节省存储空间是最重要的,而到了Android使用ART虚拟机的时代,安卓设备用于存储应用程序的空间已经足够了,用户们可以追求更高的流畅度了,所以,应用程序占用多大的空间无所谓,运行效率够高,打开速度够快,运行起来够流畅即可。
有些人认为,Android 5.0萝莉炮是Android系统的里程碑,因为从Android 5.0开始,这个系统的UI设计团队总算是有些审美了,不过我认为,Android 4.4才是Android系统的里程碑,虽然它的UI设计和前一代相比并没有太大的变化,但是Android 4.4内在的提升是巨大的,在开发者选项中,Android 4.4对ART模式进行了大胆的探索,而正是这种探索,为今天流畅易用的Android系统铺平了道路。
以上就是今天关于Android的Dalvik虚拟机和ART虚拟机的探讨的全部内容。出于浅显易懂的原则,本文并没有对Android底层和硬件方面进行深入讨论,在撰写这篇文章时,笔者参考了维基百科和相关技术博客中的一些知识,若文中有定义错误或者事实错误,还请各位读者不吝赐教。