华为开源平台已上线,已有45款应用

2019-09-02   炫美视觉

2019年8月31日,华为开源平台网站(HUAWEI OpenSource)华为方舟编译器开源官网正式上线,并首次开放了框架源码。华为开源鸿蒙OS系统和方舟编译器两个项目。

华为开源项目

华为鸿蒙系统(HarmonyOS)是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于物联网,特点是低时延,甚至可到毫秒级乃至亚毫秒级,由华为技术有限公司开发。

方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。方舟编译器还在持续演进中,陆续将上述能力实现和开源。

方舟编译器的4大优势:

1、多语言联合将同一应用中的不同语言代码联合编译、联合优化,消除语言间的性能“鸿沟”,降低开发者的优化成本

2、软硬件协同编译器与芯片实现软硬件协同优化,充分发挥硬件能效,应用体验更佳

3、轻量运行时通过编译器的语言实现能力和优化能力增强,应用运行时的开销更小

4、多平台支持支持面向多样化的终端设备平台进行编译和运行,根据设备特征提供便捷的开发与部署策略,提高开发效率

45家合作伙伴:

此外,从官网给出的介绍看,目前已有至少45款第三方应用支持华为方舟编译器,都是大家耳熟能详的超大用户量APP。

具体开源计划:

2020年:开始对Java编译器工具链开源,支持Java程序编译。

2021年:开始对JavaScript编译器工具链开源,可用于JS程序的编译。

方舟编译器开源路标(绿色部分是本期开源内容,蓝色部分待开源)

十年方舟,再造安卓

可能很多人不知道,华为为方舟编译器准备了十年。

2009年,华为启动5G基础技术研究的同时,开始创建编译组,第一批海内外研究人员加入。

2013年,华为推出面向基站领域的自研编译器HCC,并正式提出编译器框架构想。

2014年,众多海内外专家加入华为,方舟项目正式启动。

2016年,成立编译器与编程语言实验室。

2019年,华为方舟编译器正式面世!

实际上,方舟已经不是传统意义上从高级语言到机器码的“万能翻译”,更是一个编译运行系统。方舟编译器这一颠覆式的技术堪称安卓系统性能革命,将带来巨大的性能提升,官方称操作流畅度提升可高达60%。

一方面,方舟编译器首次在Java领域将虚拟机干掉了,也是软件史上首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销,也彻底告别了虚拟机GC内存回收带来的应用进程掉线,使操作流畅度大幅提升。如果说目前最新的安卓系统是和谐号动车,那么经方舟编译的安卓系统便是高铁,是“复兴号”。

华为手机直接通过方舟编译器替换了Android system-server的所有后台服务,这一项就已经足够让华为EMUI比其他安卓系统更快一步。根据华为官方测试,方舟编译器提升手机系统操作流畅度高达24%系统响应性能提升44%。入手P30系列的用户,应该已经体验到了。

另一方面,方舟编译器用空间换性能,直接将编译器的代码优化搬到了开发者环境,不再被手机端的硬件资源所限制,为代码优化提供了无限可能。

安卓卡顿,再见!

安卓的四大命门:

第一个命门:Java的“虚拟机”

第二个命门:Java的“原罪”——额外的JNI开销

第三个命门:代码优化空间有限

第四个命门:Java现有内存回收机制易造成间歇性卡顿

方舟的一个使命,就是解决安卓虚拟机GC内存回收带来的“Stop World”。目前安卓手机内存资源不够用的时候,GC直接叫停所有应用,所以偶尔会遭遇莫名卡顿。

方舟编译器采用了引用计数法(RC,Reference Counting)来进行内存的实时回收,并且配合使用了专门的消除环算法(消除对象互相引用带来的无法回收问题),来避免GC集中式回收带来的系统卡顿。相比GC,方舟的内存回收是实时的而非集中式的,且不需要暂停应用进程,这样便大大消除了卡顿。

方舟编译器整体框架

为了从机制避免手机内存被环引用“吃掉”,方舟编译器引入annotation的“告警”标示,对基础类的环进行标注。当然,Java程序员也可以对业务代码中的环进行标注。经过丰富的实践验证,方舟这种机制可减少大部分程序中环的出现。另外一方面,方舟编译器在运行状态下引入了高效的环回收机制,允许有选择的智能回收某个APP的内存占用,这对传统的环回收算法是一个非常棒的改进。

解决安卓的四大命门,出于安卓,胜于安卓,超越iOS,并且全面兼容安卓,这就是华为方舟编译器的使命!