首页 >

为什么安卓不放弃虚拟机机制 – java – 前端|

wifi怎么绑定mac,多玩坦克世界盒子 怎么录像,华为p10手机卡怎么剪为什么安卓不放弃虚拟机机制 - java - 前端|为什么安卓不放弃虚拟机机制

这是因为安卓系统采用了Java编程语言,所有的APP都是用Java语言编写的,而Java语言离不开虚拟机。

Java语言

Java语言是1995年5月发布的,有一个很重要的特性就是跨平台,借助虚拟机机制解释源代码调度硬件资源。用Java编写的代码,首先需要将源代码转换成字节码,然后在设备上运行时,再将字节码编译或者解释成硬件能够听得懂的01机器码。

也就是说,从Java的字节码到机器码,需要两样东西:

1)虚拟机,实现硬件资源的调度,也是实现跨平台的关键因素,屏蔽不同硬件平台的差异。

2)解释器或者编译器,将java字节码编译成01机器码,不过编译器实现代码的一次编译,形成二进制文件;解释器是执行一句翻译一句。可以看出编译器的效率要高很多。

Android系统的演变

Android系统诞生于2003年,早期是为数字相机开发的系统,后来发现用处不大,加上智能手机的快速发展,于是android系统成为一款面向智能手机的操作哦系统。直到2005年7月,android被google收购,才真正的被发扬光大,goolge联合84家硬件制造商,成立开放手持设备联盟,共同推动android系统的发展,才成就了今天的android系统,成为全球第一大智能手机操作系统。

大家来看一下android系统的不同版本:

Android 1.0,2008年推出,采用了一个名为Dalvik的虚拟机,集成了一个解释器,app运行时,调用这个解释器,对代码逐行解释,执行效率低,速度很慢;

Android 2.2,2010年推出,引入了JIT(Just In Time)机制,即时编译机制,当app运行时,直接编译成01这样的机器码,不用一句一句的翻译。当出现不常用的功能时,再调用解释器翻译,加快了运行速度,但是启动app时,每次都要重新编译,不能一劳永逸;

Android 5.0,2014年推出,将虚拟机Dalvik换成了ART(Android Run Time),同时将JIT的编译器换成了AOT(Ahead of Time),这样App安装到手机的同时,代码预先编译成01机器码,不太好翻译的代码,仍然用解释器翻译,从此每次打开app时,不需要重新编译了,但是app的安装时间有点儿长,占用手机存储空间比较多;

Android 7.0,2017年推出,采用了混合编译的机制,安装时先不编译成中间代码,而是用户空闲时,将能够编译成机器码的部分,通过AOT编译成静态代码,不能编译的,调用JIT+解释器。

可以看出,google一直在对android系统的解释器、编译器进行优化,提升执行效率。但是无论是编译器,还是解释器,都是在虚拟机上打补丁,本质上仍然没有彻底摆脱虚拟机。

华为“方舟编译器”

大家看一看华为的方舟编译器是如何解决这个问题的。首先,方舟编译器不是一蹴而就的,而是从2009年就开始了研究了,同年华为也开始了5G技术的研究,直到10年后,也就是2019年4月,华为才正式推出方舟编译器。

方舟编译器,绕过了android操作系统app运行时必须依赖的虚拟机,将java、C、C++等混合代码一次编译成机器码,可以直接运行在机器上,没有JNI开销,最终也提升了手机的流畅度。

严格说,方舟编译器是一个编译运行系统,需要开发环境和智能手机终端的配合,华为的EMUI 9.0以上的系统都支持方舟编译器,经方舟编译器编译的app,提升了运行效率,直观体验就是手机更加流畅。

如果觉得对你有帮助,可以多多点赞哦,也可以随手点个关注哦,谢谢。

wifi怎么绑定mac,多玩坦克世界盒子 怎么录像,华为p10手机卡怎么剪为什么安卓不放弃虚拟机机制 - java - 前端|


为什么安卓不放弃虚拟机机制 - java - 前端|
  • excel表格有合并单元格怎么排序 - java - 前端|
  • excel表格有合并单元格怎么排序 - java - 前端| | excel表格有合并单元格怎么排序 - java - 前端| ...

    为什么安卓不放弃虚拟机机制 - java - 前端|
  • mc是啥聊天软件 - java - 前端|
  • mc是啥聊天软件 - java - 前端| | mc是啥聊天软件 - java - 前端| ...

    为什么安卓不放弃虚拟机机制 - java - 前端|
  • 2021年平安普惠怎么样 - java - 前端|
  • 2021年平安普惠怎么样 - java - 前端| | 2021年平安普惠怎么样 - java - 前端| ...