科技动态

敲黑板!别小看方舟编译器这货

微信扫一扫,分享到朋友圈

敲黑板!别小看方舟编译器这货
0

华为 P30 系列的国内发布会上,

全部人的眼光都被 P30 系列吸住了,

不过黑马没有。

发布会上,

黑马看到的重点是 “方舟编译器“!

虽然发布会上对于这个 ” 方舟编译器 ” 轻描淡写,

但直觉告诉黑马这个编译器可能才是重中之重!

果然,发布会结束后,

关于 ” 方舟编译器 ” 的讨论就空前绝后,

黑马也不免俗,

今天也想说说这个 ” 方舟编译器 ” 到底是怎么回事?

对于华为来说,有什么重要意义?

想知道 ” 方舟编译器 “,

就得知道什么是编译。

简单来说就是,

将一种语言翻译成另一种语言的程序,

再具体一点,

就是将源代码翻译成目标代码的过程

这个源代码一般是高级语言

常见的有 C、C++、Java

目标代码一般为机器语言。

为什么要有这么一个过程?

通常而言,

源代码是不能被计算机直接识别运行的,

但是机器语言就能被识别到。

好比人与人之间的交流也必须说人话

与机 ” 交流 ” 也要说 “机话“。

那么安卓系统是怎么回事呢?

安卓系统是采用 JAVA 语言进行编写的,

同样 CPU 也是无法识别 JAVA 语言的,

也是要通过翻译才能够被识别。

安卓这一路走来也是很不容易,

也是经过了多种形态的翻译过程。

早先的安卓编译,

没有将源代码编译成机器码,

而是编译成中间码,称之为字节码

怎么办呢?

计算机是只能处理机器语言的,

解决方法就是由运行环境中的虚拟机

将字节码直接编译成机器码

这也是安卓在 4.4 之前,

所采用的虚拟机 Dalvik 的原因。

而为了配合 Dalvik 虚拟机,

谷歌引入了 JIT 实时编译技术,

简单来说,

这个技术可以加快 Dalvik 运行速度

提高编译效率。

但是有个问题,

JIT 实时编译技术在程序重新运行的时候,

都要重做翻译这个事,

也就是说每次打开 APP,

都要实时 JIT 编译,效率很低。

这也是发布会上,

余承东吐槽安卓程序,

” 边解释边执行 ” 低效的原因。

后来,为了改进这个弊端,

谷歌将安卓虚拟机直接替换成了ART 虚拟机

这个虚拟机的主要特征是 AOT(全部编译)。

它的优势在于,在应用安装时,

字节码就会预先在手机上编译成机器码

而不是像 Dalivk 虚拟机那样,

在运行时再实时编译。

安装的时候就已经编译,

后续运行的时候就不需要再编译,

因此APP 的运行速度会加快

但是也有缺陷的,

在应用安装的时候,

就把字节码编译成机器码,

会消耗更多的存储空间

安装时间会变长

注意,在这个 ARI 环境下的安卓程序,

并不是 ” 边解释变执行 ” 了。

不过,在安卓 7.0 时代,

谷歌又主动选择了 JIT+AOT 的编译方式。

这里黑马简单说一下,

一般情况下,

JIT ——实时编译,是动态编译

AOT ——全部编译,是静态编译

动态编译在编译后得到的信息多

但实时编译效率低

静态翻译在编译后得到的信息少

但程序运行速度快

所以为了综合二者的优点

谷歌选择了混合编译的方式。

在安装前还是像之前 JIT 一样编译,

解决安装速度慢的问题。

同时还生成一个 ART 索引文件,

预加载与缓存提升应用性能

进一步加快应用的启动速度与运行性能。

那华为的 ” 方舟编译器 ” 是怎么做的?

根据华为的说法,

” 方舟编译器 ” 是架构级优化

全程执行机器码高效运行程序

而不是像谷歌那样,

将 JAVA 代码编译成中间字节码

就算 ART 环境下,

编译器编译的也是字节码,

再编成机器码。

跟网传的华为只是把 ART,

新瓶装旧酒还是不同的。

具体原理黑马没有查到,

但从华为发布的方舟编译器的执行效率来看,

实现了将 JAVA 代码直接编译成机器码

是否真的那么牛逼,

需要等到开源软件放出才能知道

发布会上有槽点,

比如说安卓 “边解释变执行” 低效的原因,

前面黑马也已经说过了。

安卓 4.4 之前的确是如此,

但之后更换了虚拟机后,

这种编译方式就已经改变了。

即使来到安卓 7.0 时代

谷歌采用混合编译的方式,

也并不像之前安卓 4.4 时代那样,

单纯的 JIT 实时编译。

对于这,官方为了对比,

可以理解。

虽说如此,

但如果方舟编译器,

真的实现全程 JAVA 代码直接编译成机器码,

那么真的很牛逼!

黑马认为说不定这是逆天的存在,

说不定可以真的可以媲美 iOS

而且,如果真的具备这种能力,

那么对于华为日后自建系统来说,

将是大有益处。

将会直接跳过生态系统的建设周期,

任何软件仅需要通过方舟编译器进行编译,

就能够直接等同硬件通信。

软件开发和移植的难度将大大降低

对于系统生态建设来说,堪比开挂!

特别是对比 Windows Phone 系统差劲的生态后。

唯一的问题可能是开发者会使用吗 ?

撰文:LZH

编辑:Julie

监制:Andy

阅读原文...


Avatar

荣耀 20 Pro 确认后置四摄 搭载潜望式镜头 多方面借鉴华为 P30 系列

上一篇

从工具切入、提供非油品优惠,油团团能否推动加油站多元化发展

下一篇

您也可能喜欢

评论已经被关闭。

插入图片
敲黑板!别小看方舟编译器这货

长按储存图像,分享给朋友