智东西(公众号:zhidxcom)
文 | 轩窗
智东西8月31日消息,刚刚华为方舟编译器开源官网正式上线,方舟编译器代码正式出现在华为开源平台HUAWEIOpenSource上。
在8月9日的华为开发者大会上,华为消费者业务CEO余承东就宣布将在本月开源方舟编译器的框架代码。方舟编译器是华为自研操作系统鸿蒙OS的重要组成部分,本次方舟编译器框架代码的正式上线,也意味着华为鸿蒙OS向开源走近了一步。
编译器是将计算机高级编程语言转化为机器可执行的机器语言的工具,也就是直接转化为二进制代码。用方舟编译器做出来的APK,下载到手机上直接就是机器语言,也就是二进制代码,机器直接就可以运行,不需要再做编译了,这是方舟编译器最本质的技术突破。
一、方舟编译器开源了哪些内容?
本次方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现Java程序到aarch64汇编指令的编译过程。
开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译。社区参与者可以通过框架源码学习方舟编译器的编译器中间表达(IR)及基本的中端编译框架,熟悉方舟编译器的架构思想,并参与诸如对编译器中端优化的贡献。
▲方舟编译器整体框架
方舟编译器框架代码可完成Java静态编译,包括类层次关系分析、虚方法表和接口表的生成、native函数的处理等,以及基于引用计数的内存管理方式,提供RC插入功能。
目前方舟编译器的代码托管在华为云,在未来走向开放治理以后,将按照所挂靠机构的模式来托管。开发者可通过代码托管平台参与社区贡献,包括文档贡献和代码贡献,同时也可在此平台上反馈相关问题和需求。
根据之前华为在开发者大会上公布的信息,作为鸿蒙OS的重要工具,方舟编译器从2019年8月开始,将分步骤持续进行开源。具体的开源计划如下:
2020年:开始对Java编译器工具链开源,支持Java程序编译。
2021年:开始对JavaScript编译器工具链开源,可用于JS程序的编译。
官方网站:https://www.openarkcompiler.cn/home
代码托管网站:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler
码云镜像仓库地址:https://gitee.com/harmonyos/OpenArkCompiler
二、方舟编译器的四大技术亮点
方舟编译器的出现是为了解决安卓系统编译过程复杂、低效的问题。此前,智东西对程序编译以及方舟编译器进行过深度解读(华为王成录:解密方舟编译器和EMUI未来四大演进方向!)
方舟编译器有着以下四大技术亮点:
1、是一种多语言联合优化编译器,消除了跨语言调用的开销
方舟编译器则可以让不同语言代码在程序开发环境中环境中编译成一套语言统一的可执行文件,在硬件的运行环境高效执行。
也就是说,方舟编译器中吸纳了现在安卓生态中的各种主流框架和库,对不同语言做了统一的程序优化,直接编译成机器指令。
2、程序运行时无需依赖虚拟机,减少资源占用,并且建立了高效的内存回收机制
方舟编译器摆脱了原有安卓系统虚拟机的编译模式,把动态的部分全部变为静态编译,其核心是一定要对Java语言动态特性非常深入理解。
Java是非常庞大的,需要对安卓现有的应用,可能会用到哪些库,这些库之间怎么用理解,需要大量的分析运行状态,才能够将这些动态特性完成提前的编译。同时由于方舟编译器统一将程序编译为机器语言,所以也是跨硬件平台的。
3、可针对不同应用灵活编译优化,翻译出性能更佳的机器指令
现有的安卓编译,大部分代码在虚拟机环境运行,其创建遵循同一套“模板”,所以难以作深度的优化。
方舟编译器可针对不同应用灵活编译优化,每个应用编译优化方案由开发者自己来定,分别形成不同应用优化后的机器码。
4、开发者学习和使用成本低,打包时即编译
方舟编译器的又一亮点是,在应用开发构建的阶段为开发者提供快速的集成编译环境。而现行安卓系统则是在用户将应用下载后,在终端上实现编译的。
三、华为十年奋战编译器研发
华为在编译器研发上的积累,可以追溯到2009年,华为海思研发起步时,当时吸引了第一批海内外研究人员加入,创建了编译组。
2013年,华为自研并推出了用于基站的编译器HCC,这也是华为编译器框架构想的正式提出,也是方舟编译器的前身。
2014年,Fred Chow( 周志德)加入华为并担任华为编译器技术首席科学家,建立了方舟编译器的主架构。
2015年华为推出自研编程语言CM,2016年成立编译器与编程语言实验室,2019年华为正式推出方舟编译器。前前后后共计十年时间,经过了几百位研究人员的努力,投入的资金也有几亿美元了。
有了方舟编译器优化的安卓系统在DNA上与苹果iOS系统接近了。华为下一步要做的工作就是推动生态建立,不断将系统进行优化,让用户用上更纯净的安卓软件。
结语:华为鸿蒙OS向开源迈进一步
自本月9号,华为在其开发者大会上正式推出自研的操作系统鸿蒙OS之后,鸿蒙操作系统话题热度一再飙升。华为将鸿蒙OS定位于面向未来的物联网操作系统,最关键的问题在于应用生态建设。在华为鸿蒙推出之前,国内也曾有过不少自研的操作系统,但最终都因生态建设不佳而渐渐退出了舞台。
方舟编译器是华为自研操作系统鸿蒙OS的重要组成部分,本次方舟编译器框架代码的正式上线,也意味着华为鸿蒙OS向开源走近了一步。最终的结果,还需拭目以待。