找回密码
 立即注册

安卓流畅性直逼苹果iOS?华为开源方舟编译器!

chengzi 2019-4-15 22:53:27
文/极客修小编
在昨儿个的华为P30国行发布会上,华为正式公布了售价,具体看图


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

配置方面,两款手机不再具体陈述,感兴趣请参考我们之前的推文
华为P30终于来了!50倍望远镜+夜视仪,苹果慌了!
今天我们来聊聊会上宣布推出的“方舟编译器”


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

方舟?根据《圣经》的传说,方舟意味着重生
那么这个方舟编译器是什么呢
根据官方描述,方舟编译器通过架构级优化,显著提升性能
尤其是全程执行机器码,高效运行应用,彻底解决安卓应用“边解释边执行”造成的低效率


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

同时也给出了具体的数字
系统操作流畅度提升24%,系统响应速度提升44%,第三方应用重新编译后流畅度可提升60%
如此来看,方舟编译器倒是大有方舟的意味呢
更重要的是!这艘方舟全世界人民都可以乘!

安卓流畅性直逼苹果iOS?华为开源方舟编译器!

华为宣布,方舟编译器面向业界开源,首先面对国内开放,而后会逐渐推行到海外
最后CEO余承东也呼吁APP开发商、开发者尽快使用,可以带来焕然一新的体验
华为这可真是心系天下呀


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

我们今天便从系统编程角度浅析下,方舟编译器到底有没有那么神奇呢
首先,对于华为所述的安卓系统“边解释边执行”,这点其实有点夸大事实的嫌疑
什么叫做边解释边执行呢。众所周知,安卓系统基于Linux开发,使用的是Java语言
但是,基于Java代码写的安卓软件,CPU是不能直接理解里边的代码执行的

安卓流畅性直逼苹果iOS?华为开源方舟编译器!

这时候便需要通过Java的虚拟机,将Java的语句解析成字节码,然后再整合成CPU所能理解的指令
解释器一边解释,CPU一边执行,这便是所谓的解释执行
你可能会好奇,何必这么麻烦


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

当然,安卓想要跑程序还有另一种更简便的方法
就是将Java语言直接翻译成机器语言,专业点叫做本地机器码(native code)
而翻译又存在两种方式,一种叫做AOT编译,一种则是JIT编译
首先是AOT(Ahead of time),预先编译,顾名思义
将解析好的字节码重新编译,变成CPU能够理解的机器码


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

形象地说,相当于在你看电影前制作好的中英文台词
另一种则是JIT(Just in time),即时编译器,在软件运行后,一边翻译,一边执行
这就等于你看电影时,下方滚动出现的中英文字幕


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

在安卓5.0以前,或者说安卓4.4之前,安卓默认使用的是Dalvik虚拟机,这时候是不存在AOT的
而这个时候的安卓妥妥的就是华为说的“边解释边执行”,通过解释执行+JIT来运行Java代码
但在安卓5.0,系统虚拟机换成了ART(Android run time),采用的是完全的AOT
应用在第一次安装的时候,字节码就会预先编译成机器码,因此提高了机器的运行效率


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

所以,这个时候JIT被放弃了
这就相当于你已经把电影看了好几遍,你都已经知道他下一句要说啥了,还需要啥字幕
但是到了安卓7.0,谷歌又把同步字幕引入了
为了解决ART带来的软件安装速度慢的问题,谷歌又决定不再将整个软件编译

安卓流畅性直逼苹果iOS?华为开源方舟编译器!


而是接着做解析执行,将Java代码解析成字节码,交给虚拟器运行
但编译还是得编译啊,不然效率多低,于是同步字幕又回归到了我们的视野
同时,系统还要做另一件事,那就是在空闲的时候,将字节码进行分析
筛选出那些经常使用的字节码,或者叫“热代码”,然后对其进行编译,变成机器码储存在机器上


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

这个过程依然叫做AOT,不过应该叫做All Of the Time,全时间段编译
这样一来,经过你对软件的多次打开,系统分析出热代码,以后你开启应用的时间自然得到了缩短
非要做个比喻的话,大概就是对电影进行精华片段混剪,并配上相应的字幕
因此,如今的安卓根本不能称之为“边解释边执行”,而是解释运行+AOT+JIT的综合


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

华为这种过度夸大安卓弊端的做法确实值得商榷
而华为的方舟编译器到底又是什么呢
首先我们排除类似安卓5.0和6.0时代的ART策略,在这种方式下,进行全局软件的odex化
既增加开机时间,又增加了应用的安装时间和体积,这种已被谷歌抛弃的策略,华为自然不会新瓶装旧酒

安卓流畅性直逼苹果iOS?华为开源方舟编译器!

那么这个所谓革命性的突破到底是怎么实现的呢
根据极客君的分析,在发布会上,余承东呼吁APP开发者加入,将应用程序重新编译一下,不需要重新开发
这句话根据我的理解,大概意思就是
只要你们用我们的编译器,将APP重新打包成apk安装文件,便能实现性能提升和改善


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

所以,根据我的猜测,方舟编辑器大概率是一个类似开发工具的东东
能够实现,将apk文件中的Java语言直接转换成机器码,而这些,在软件安装之前便已完成
这也就是说,只要用户安装经过方舟编译器“改造”过的软件,便能实现其宣称的各类流畅度提升
而目前的安卓,编译都是在机器内实现的
这就相当于给你装了个同声翻译机,这下连字幕都不需要


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

而华为是如何实现统一编译的呢,这点不得而知
至于编译后代码的兼容性,目前也没有具体测试
但细思极恐,极客君想起了曾经的一条新闻


安卓流畅性直逼苹果iOS?华为开源方舟编译器!

余承东承认,华为有自研系统,如果无法使用安卓系统,华为将启用备用系统
而从方舟编译器来看,或许,那一切都是真的

极客修,值得信赖的手机快修平台!

安卓流畅性直逼苹果iOS?华为开源方舟编译器!


回复

使用道具 举报

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 他们正在看