文/极客修小编
在昨儿个的华为P30国行发布会上,华为正式公布了售价,具体看图
配置方面,两款手机不再具体陈述,感兴趣请参考我们之前的推文
华为P30终于来了!50倍望远镜+夜视仪,苹果慌了!
今天我们来聊聊会上宣布推出的“方舟编译器”
方舟?根据《圣经》的传说,方舟意味着重生
那么这个方舟编译器是什么呢
根据官方描述,方舟编译器通过架构级优化,显著提升性能
尤其是全程执行机器码,高效运行应用,彻底解决安卓应用“边解释边执行”造成的低效率
同时也给出了具体的数字
系统操作流畅度提升24%,系统响应速度提升44%,第三方应用重新编译后流畅度可提升60%
如此来看,方舟编译器倒是大有方舟的意味呢
更重要的是!这艘方舟全世界人民都可以乘!
华为宣布,方舟编译器面向业界开源,首先面对国内开放,而后会逐渐推行到海外
最后CEO余承东也呼吁APP开发商、开发者尽快使用,可以带来焕然一新的体验
华为这可真是心系天下呀
我们今天便从系统编程角度浅析下,方舟编译器到底有没有那么神奇呢
首先,对于华为所述的安卓系统“边解释边执行”,这点其实有点夸大事实的嫌疑
什么叫做边解释边执行呢。众所周知,安卓系统基于Linux开发,使用的是Java语言
但是,基于Java代码写的安卓软件,CPU是不能直接理解里边的代码执行的
这时候便需要通过Java的虚拟机,将Java的语句解析成字节码,然后再整合成CPU所能理解的指令
解释器一边解释,CPU一边执行,这便是所谓的解释执行
你可能会好奇,何必这么麻烦
当然,安卓想要跑程序还有另一种更简便的方法
就是将Java语言直接翻译成机器语言,专业点叫做本地机器码(native code)
而翻译又存在两种方式,一种叫做AOT编译,一种则是JIT编译
首先是AOT(Ahead of time),预先编译,顾名思义
将解析好的字节码重新编译,变成CPU能够理解的机器码
形象地说,相当于在你看电影前制作好的中英文台词
另一种则是JIT(Just in time),即时编译器,在软件运行后,一边翻译,一边执行
这就等于你看电影时,下方滚动出现的中英文字幕
在安卓5.0以前,或者说安卓4.4之前,安卓默认使用的是Dalvik虚拟机,这时候是不存在AOT的
而这个时候的安卓妥妥的就是华为说的“边解释边执行”,通过解释执行+JIT来运行Java代码
但在安卓5.0,系统虚拟机换成了ART(Android run time),采用的是完全的AOT
应用在第一次安装的时候,字节码就会预先编译成机器码,因此提高了机器的运行效率
所以,这个时候JIT被放弃了
这就相当于你已经把电影看了好几遍,你都已经知道他下一句要说啥了,还需要啥字幕
但是到了安卓7.0,谷歌又把同步字幕引入了
为了解决ART带来的软件安装速度慢的问题,谷歌又决定不再将整个软件编译
而是接着做解析执行,将Java代码解析成字节码,交给虚拟器运行
但编译还是得编译啊,不然效率多低,于是同步字幕又回归到了我们的视野
同时,系统还要做另一件事,那就是在空闲的时候,将字节码进行分析
筛选出那些经常使用的字节码,或者叫“热代码”,然后对其进行编译,变成机器码储存在机器上
这个过程依然叫做AOT,不过应该叫做All Of the Time,全时间段编译
这样一来,经过你对软件的多次打开,系统分析出热代码,以后你开启应用的时间自然得到了缩短
非要做个比喻的话,大概就是对电影进行精华片段混剪,并配上相应的字幕
因此,如今的安卓根本不能称之为“边解释边执行”,而是解释运行+AOT+JIT的综合
华为这种过度夸大安卓弊端的做法确实值得商榷
而华为的方舟编译器到底又是什么呢
首先我们排除类似安卓5.0和6.0时代的ART策略,在这种方式下,进行全局软件的odex化
既增加开机时间,又增加了应用的安装时间和体积,这种已被谷歌抛弃的策略,华为自然不会新瓶装旧酒
那么这个所谓革命性的突破到底是怎么实现的呢
根据极客君的分析,在发布会上,余承东呼吁APP开发者加入,将应用程序重新编译一下,不需要重新开发
这句话根据我的理解,大概意思就是
只要你们用我们的编译器,将APP重新打包成apk安装文件,便能实现性能提升和改善
所以,根据我的猜测,方舟编辑器大概率是一个类似开发工具的东东
能够实现,将apk文件中的Java语言直接转换成机器码,而这些,在软件安装之前便已完成
这也就是说,只要用户安装经过方舟编译器“改造”过的软件,便能实现其宣称的各类流畅度提升
而目前的安卓,编译都是在机器内实现的
这就相当于给你装了个同声翻译机,这下连字幕都不需要
而华为是如何实现统一编译的呢,这点不得而知
至于编译后代码的兼容性,目前也没有具体测试
但细思极恐,极客君想起了曾经的一条新闻
余承东承认,华为有自研系统,如果无法使用安卓系统,华为将启用备用系统
而从方舟编译器来看,或许,那一切都是真的
极客修,值得信赖的手机快修平台!