8月31日,华为方舟编译器开源官网正式上线,并首次开放了框架源码。
本次方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现Java程序到aarch64汇编指令的编译过程。开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译。当前,方舟编译器支持Java/Kotlin程序字节码的前端输入,其它编程语言的支持(如 C/C++/JS 等)还在规划中。
此次公布方舟编译器框架源码后,华为预计将于2020年及以后实现方舟编译器工具链完整开源。
根据官网资料显示,方舟编译器已与45多款应用合作,包括淘宝、天猫、支付宝、优酷、爱奇艺、美团、今日头条、微博、新浪、网易、腾讯新闻等主流应用,BAT三家旗下应用均有合作,不过微信不在其中。华为称将对各类流行应用进行编译优化,并在未来不久上线。
据华为CBG软件部总裁王成录介绍,华为2009年就开始为编译器做准备,2013年有了自己的编译器HCC,2014年引入了Fred Chow等技术大牛,来做华为编译器的主架构。此后,2012年实验室成立了编译器与编程语言实验室,今年4月推出了方舟编译器。
编译器是一种语言(通常为高级语言)翻译为另一种语言(通常为低级语言)的程序,可以将源代码翻译成可以被计算机或虚拟机执行的代码。华为方舟编译器可供开发者,在开发环境一次性将高级语言编译为机器码,可以让手机安装的APP运行效率明显提升。
相比于安卓原生系统,方舟编译器可以明显提升系统运行效率。首先,它是多语言联合优化编译器,消除跨语言调用开销,这是影响Android性能消耗较大的核心原因之一。其次,把虚拟机去掉了,内存回收机制。虚拟机可以帮助安卓系统适配各种处理器,实现跨平台操作,但也会占用额外的系统资源。
华为宣称,方舟编译器可将安卓应用流畅度最高提升60%。据华为实验室测试数据,EMUI 9.1在仅仅对系统组件System Server应用了华为方舟编译器后,系统操作流畅度提升24%,系统响应性能提升44%。新浪微博极速版是第一款采用方舟编译器的第三方应用,操作流畅度提升60%。
谈及华为之所以要做方舟编译器,王成录解释:“由于安卓的开放性,对上层应用没有强制规则。比如安卓的第三方应用市场非常多,数量无法统计;安卓的安装方式也非常多,通过邮件都可以安装,由此带来的问题比较多。所以安卓用户要真正能够获得好的体验,手机厂家只把手机(硬件)做好是不够的,(还需要对软件进行提升)。”
值得一提的是,华为在国内EMUI在历代版本的更新当中,除了Linux的安卓内核外,已逐步把安卓系统的很多部分替代了。方舟编译器也是其中关键步骤之一,取代了安卓原生系统虚拟机的位置。
华为此举,可以认为是将安卓系统过渡到自研系统的铺垫。在华为最新发布的EMUI 10当中,已经具备了很多与鸿蒙相似的优点,包括硬件能力互助共享、一次开发多端部署等等。如果未来进一步把Linux内核替代为鸿蒙内核,在国内市场实现平稳迁移并非不可能。