分享

华为方舟编译器正式现身, 它到底有多厉害? 来看官网揭开它的神秘面纱

 雪泥鸿爪969 2019-09-05

之前网上流传各种方舟编译器如何厉害的说法,而现在,2019年8月31日早上9点,华为方舟编译器官网悄悄地上线了。

点击加载图片

方舟编译器的官网的内容不多,就是对方舟编译器的简单介绍、开发帮助文档以及简单的代码演示。之前官方就说要在8月开源编译框架代码,11月开源完整版。冰冰还是很期待方舟编译器之后的发展的。

根据官方的说法,使用方舟编译器可以提升Android系统第三方应用60%流畅度。对Android开发者来说还是很有诱惑力的。那它为什么能提升那么高运行效率呢?这需要我们先了解Android系统的知识。

点击加载图片

我们知道Android应用是用Java代码写的,之前谷歌是使用了Dalvik虚拟机边解释边执行运行代码方式运行,但是效率低,所以换成了JIT模式。JIT是即时编译的,稍提高效率,但还不够,然后在Android5.0就废弃了Dalvik虚拟机而推出了ART虚拟机。android5.0系统使用的是AOT模式,做法是在安装应用的时候就已经对代码编译成机器码,打开应用的时候就不需要编译即可直接运行。这个方法缺点就是安装的时候时间太长,然后在Android7.0又引进了JIT模式。但是不管怎么做,基于Java的特点,就很难找到一个平衡点。那方舟编译器是怎么做的呢?

当前方舟编译器支持Java/Kotlin程序字节码的前端输入,其它编程语言的支持(如 C/C++/JS 等)还在规划中,方舟编译器的中间表示(IR)转换器将前端输入转换成方舟IR,并输送给后端的优化器,最终生成二进制文件,二进制文件与编译器运行时库文件链接生成可执行文件,在方舟的运行环境中就可执行该文件

点击加载图片

我们在官方代码演示那里可以看到,编译代码之后生成的是一个so文件。

点击加载图片

也许你会问什么是so文件。Android中的so文件是动态链接库,是二进制文件,即ELF文件,多用于NDK开发中。换句话说,方舟编译器可以将Java代码生成so库,这种文件是可以被Android系统直接运行的,从而提升执行效率。虽然我们可以用一句话解释原因,但是整个实现过程却是很难的,需要克服很多技术难题。

点击加载图片

虽然看起来华为的做法能提高Android系统的流畅度,但是实际情况会是怎么样还是有待时间考验的。冰冰在发稿前没有下载搭建环境尝试,大家感兴趣的话可以轻易官网找到搭建步骤玩一下,而我还是等它正式推出IDE的时候再试一下吧哈哈。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多