前阵子发布了华为P30系列,最明显的升级是摄像部分。另外P20打下的基础突破了自身,即使突破了整个行业。但从长远来看,华为P30发布带来的摄像推广只是例行的升级。真正懂得做生意的人注意到了华为的“方舟编译器”,也看到了华为真正的技术实力。
方舟编译器简单来说就是一种可以直接将Java等高级语言编译成机器码的技术。它最大的优点是绕过了Android系统的VM (Virtual Machine),使应用可以像苹果引以为豪的iOS系统一样,转换后的机器码可以直接由CPU操作,大大提高了运行效率。综上所述,一切变得很简单。为了证明方舟编译器的技术含量,我觉得有必要详细介绍一下它的工作原理。
经过九年义务教育,我们都知道计算机只知道0101这样的二进制代码。对于人脑来说,直接用这样的二进制代码编程显然是不现实的。于是,汇编语言应运而生,它是一种低级语言,只是一系列字母指令集。后来为了实现更复杂的功能,高级语言诞生了,比如C语言、Java、python等。,可以用更短的代码实现更复杂的功能。
当然,高级语言不能被计算机直接读取,所以这里需要一个编译器。编译器是将高级语言翻译成低级语言的程序,起着承上启下的关键作用。所以编译的复杂度会直接影响程序的执行效率。比如C语言比Java语言效率高,恰恰是因为C语言编译的是CPU可以直接执行的机器码,Java语言编译Java语言是通过Java虚拟机(JVM),然后JVM。因此,这一额外的步骤将被放大,这将影响应用程序的运行。这也是Android系统应用卡在前期的主要原因。虽然Google对JVM做了一系列的改进和优化,但是还是很难彻底解决。
另一方面,苹果的iOS系统,使用Clang/LLVM直接编译机器码,没有Android需要中间层那么麻烦。所以iOS光滑如丝,还有一个不可忽视的因素就是闭环。Android系统底层由Linux系统搭建,并且由于Android系统是开源的,为了解决适应不同硬件环境的问题,Google增加了一个基于JIT(动态编译)的虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA应用框架,所有Android应用都运行在这个框架上。
当然谷歌也知道这样效率不高,所以在Android 5.0版本中,用ART模式代替Davlik虚拟机。ART是一个AOT(超前)编译器,这意味着在应用程序运行之前,字节码被静态编译成机器码,从而避免了每次打开应用程序时编译虚拟机的麻烦。但只有代码的静态编译,Java本身的动态特性,才会在执行代码的过程中加载动态类(即使用轮子),而静态编译无法预测会加载哪些动态类。所以时间长了,还是需要虚拟机的动态编译能力。Android要想像iOS一样流畅,就必须跳过虚拟机,方舟编译器解决了这个问题。
据官方消息,华为的方舟编译器也是基于AOT编译器。而方舟编译器则创造性地静态编译动态类,将所有Java代码编译成机器码,这样就可以完全避开虚拟机,直接编译成机器码在手机CPU上运行,和iOS系统一样高效。除了直接编译,方舟编译器还对编译算法进行了优化,在内存恢复方面有所改进,不仅在应用上,在系统运行的流畅度上也有所提高。
当然,谷歌也不会想到这么大的推广。我想要,但我做不到。因为要用方舟编译器,就要从应用的打包编译重新开始,开发者必须按照方舟编译器标准重新编译应用安装包,所以不仅是Android系统,还需要应用的配合才能使用。目前看来只有微博极限版被改编过。当然,华为还宣布,方舟编译器将完全开源,提供完整的编程框架和应用开发工具,更多的开发者将参与方舟编译器的开发和使用,共同提升整个Android生态系统的体验。方舟编译器是基于ARM指令集开发的,所以全面开源意味着也可以使用其他厂商的安卓系统。
在这里我们可以看到,华为在R&D的投资和生态规划并不只是说说而已。开发布会卖手机只是小事,华为的目标是建立全方位的生态。无论你怎么看待华为,你都不得不承认,只有华为有实力在中国做全行业,打造自己的生态,方舟编译器就是这个过程的催化剂。1.《华为方舟编译器 华为的方舟编译器到底是什么,很牛逼吗?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《华为方舟编译器 华为的方舟编译器到底是什么,很牛逼吗?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1420311.html