02.29 关于华为方舟编译器,你怎么看?

蒋宣阳


大家好,我是‌(放牛大叔)优质​数码领域创作‌者,对数码有‌着非常深‌刻的‎了解,对手机、相机、笔记本电脑十分了解,目前我在数码城工作,每天能接触到各种各类电子产品,让我用专业的角度为您解答:

安卓系统基本操作。除了华为、苹果,其他手机厂商基本用安卓系统。简单点说,就是用JAVA虚拟机编程(高级语言),再用JAVA虚拟机汇编(汇编语言),再编译成机器懂的二进制(机器语言)。 虚拟机始终绕不开、都是虚拟机进程,而且不同公司虚拟机、程序编写软件和习惯不同,必须一行行地汇编、编译、执行,每部分都有头有尾,就相当于把名著改变成若干集电视剧。

方舟编译器的逆天操作。华为这款编译器将上述汇编、编译功能合为一体,成为华为统一标准,本质是创新型的安卓应用编译器。不管是哪家编的程序(高级语言),用华为编译器,可以统一地汇编、编译,统一给安卓系统执行(机器语言)。就相当于把名著改成一部电影,只有一个开头结尾,是一个整体。这么做有一个前提,就是兼容适用于安卓的所有开发语言、汇编表、编译表,在此基础上自己重新汇编、编译,整合成为华为自己的标准。这个工作量和难度是相当惊人的。


数码牛牛


谢谢您的问题。华为方舟编译器,是一次重大创新。

华为方舟编译器的原理。

三种计算机语言。第一,机器语言,就是0、1二进制代码。第二,汇编语言,就是通过机器硬件将机器语言编译成我们能看明白的编译语言,就相当于翻译器。第三,高级语言,就是程序员编程,比如JAVA 编程等。

安卓系统基本操作。除了华为、苹果,其他手机厂商基本用安卓系统。简单点说,就是用JAVA虚拟机编程(高级语言),再用JAVA虚拟机汇编(汇编语言),再编译成机器懂的二进制(机器语言)。 虚拟机始终绕不开、都是虚拟机进程,而且不同公司虚拟机、程序编写软件和习惯不同,必须一行行地汇编、编译、执行,每部分都有头有尾,就相当于把名著改变成若干集电视剧。

方舟编译器的逆天操作。华为这款编译器将上述汇编、编译功能合为一体,成为华为统一标准,本质是创新型的安卓应用编译器。不管是哪家编的程序(高级语言),用华为编译器,可以统一地汇编、编译,统一给安卓系统执行(机器语言)。就相当于把名著改成一部电影,只有一个开头结尾,是一个整体。这么做有一个前提,就是兼容适用于安卓的所有开发语言、汇编表、编译表,在此基础上自己重新汇编、编译,整合成为华为自己的标准。这个工作量和难度是相当惊人的。



华为方舟编译器的功能。

过程很省事。华为方舟编译器是底层优化,虽然执行效率还需要实践证明,但是让操作系统全程执行机器码,彻底改变了安卓系统“边解释边执行”的效率问题,高效编译,直接运行,多个来源,一个出口,效率会提升。

性能很优越。余承东的描述中,华为方舟编译器能够将系统操作流畅度提升24%,将系统运行效率提升44%,将各种APP操作流畅度提升60%。


华为方舟编译器的潜力。

开发共享搭平台。余承东面向国产手机厂商宣布,方舟编译器要开源,鼓励APP开发厂商尽量使用方舟编译器,实际是培养客户的信任和使用习惯。到了5G时代,一切上云,APP未必一直存在。

为自己系统铺路。华为如果今后用自己的系统,各家厂商不需要根据华为的新系统重新开发APP,只需要通过方舟编译器处理过,就可以很自然地将安卓系统的软件移植到华为操作系统上,背后是手机生态的移植,这个意义非同寻常。华为的5G布局也是类似原理,尽量兼容3G、4G组网,减少原有用户、厂商的建设、使用成本。同时,华为芯片减轻对高通的依赖、方舟编译器减轻对安卓的依赖。这是华为的技术远见。
欢迎关注,批评指正。


追科技的风筝


首先不得不说我大华为技术实力的雄厚,能在编译器级别做架构性的优化,还是需要实力与勇气并存的。那么值得我们思考的是,在中国科技企业中,具有实力和勇气的公司并不只华为,例如阿里也是在业内以技术推动型成长的公司,像它的阿里云服务也是实力与勇气的结晶,为何华为会带头领先做Java编译器级别的优化呢?说到这,相信有人可能理解了,不错,因为华为的手机业务。华为目前是唯一拥有自主知识产权麒麟芯片的公司,也有自主的手机操作系统,而且华为手机目前是国内手机行业的佼佼者,针对自身的硬件特性和系统特性,如何提高操作系统的流畅度或者体验度,实现定制化的性能调优,都是推动华为技术方向的因素。底层的硬件,到中层的操作系统,华为都有了自主能力,那么到用户层之间就差APP的性能优化是华为没有改变的,如何优化APP性能,那么从编译器入手也就变得顺利成章。说到编译原理,可能很多非计算机专业伙伴很难理解。在这里我尽量通过一个通俗的例子稍作解释。例如以我们喜闻乐见的吃举例,我们依照食谱做一道菜,那么做为成品的菜就可以理解为一个APP,食谱里的步骤就可以理解为编译器为我么生成app的执行流程,这套流程的好坏或者是否合理,就决定了菜的好吃程度。同样的菜,如果我们把做菜的步骤调整优化,那么菜的口感也就会发生变化。那么如何去调整优化app的执行流程了,这就是编译器才能做的事了。那么如果能从编译器级别解决安卓性能问题,那么带来的市场将是不可估量的。安卓一直被iOS碾压的就是性能问题,如果真的能解决性能问题,对于华为自身以及华为在国际中软件及硬件市场的地位提升是不言而喻的。所以华为第一时间开源了编译器,那么必将会引入大量的开发爱好者和APP软件开发者,如果编译器针对麒麟芯片有更深层的优化,那么也必将推动麒麟芯片在安卓市场中的硬件地位。所有综合考虑,华为从硬件到系统再到编译器的布局,使其在移动业务上实现了闭环,通过打通软硬件之间的隔阂,相辅相成的发展,再加上自身5G技术的加持,华为未来的市场是不可估量的。仅代表个人观点,有错误之处,还望指正。


我乐自我高


把ART,方舟编译器和LLVM的拉在一起比一比,顺便驳一驳把ART(Android Runtime) 捧上神坛的观点!

下面这个观点很有市场,6年前的ART已经是机器码了,方舟编译器似乎是新瓶装ART旧酒啊!

ART往往只能静态编译不到20%的机器码

因为Java的动态语义完全啃不动,只能原封不动放在一边,等运行的时侯边解释边运行。

Java 语言定义的语义可以粗略分为静态和动态两部分,动态语义部分是在静态时无法确定的。ART和方舟编译器的两个编译器两者根本的区别在于AOT无法编译 Java的动态语义部分,比如反射。换句话说,ART仅能编译静态部分。由于Java语言独特的虚拟机机制(简称JVM),在运行时,首先在手机上打开虚拟机,然后将应用程序的Java字节码即时编译为机器码,边翻译边执行,执行效率与iOS有了差距。

ART 并非在应用一安装完成的时候就一次把AOT做完,需要应用跑过几次之后才有充足的数据来进行 Profile-guided 的编译工作。并且有些 OEM 会配置 ART 的 daemon 使得设备必须在充电的状态下才能执行 dex2oat 工具编译应用。

ART在Android的实践一直差强人意

Android 5.0 ~ 6.0 ,Google 推出了 ART 来解决之前的 Java 代码执行效率问题。这个阶段采用的是完全 AOT 模式;Android 应用在安装的时候,系统会把所有Java静态语义(动态语义搞不定)提前编译为机器码。这种模式有两个缺点完全不能忍:

首先,安装速度极为慢。哪怕当前的 855 采用 AOT 模式编译较大的应用(如支付宝)可能就要一分钟。更别说当年蜗牛般的 CPU ,安装一个应用都让你等得头皮发麻。更要命的时候,系统开机时会对所有的应用执行 AOT 操作,这时候你的开机速度可能要半个小时……

另外,就是占用ROM空间,Java 代码编译为机器码之后体积会急剧膨胀。就拿微博极速版来说9.5M,安装后直接干到37.5M,臃肿了300%,用有限的手机资源去优化指令,难免不彻底,消费者也没有耐心等你优化啊!

方舟编译器更像LLVM

EMUI9.1对安卓底层动刀背后,是华为与苹果下半场之争

图标

方舟编译器似乎能"100%静态编译动态语义"(从没人做到过)。也就是,甭管你什么语义,我都给你100%的静态化,将Java虚拟机彻底解构,这别说Art 、 Dalvik 等做不到的,纵观整个ICT行业还没人做到过。当然,原理效果有待验证。

对比ATR在手机安装的时候编译,方舟编译器在应用开发阶段就在服务器上编译(含彻底地优化指令)完成,在应用市场上架。节省了宝贵的手机资源,这一点就和LLVM完全一致了。

这里澄清一个概念:虚拟机其实是个好东西,在服务器或云端,大把的CPU,RAM,呼呼的风扇,跑起虚拟机来没一点负担。但手机端侧,CPU,RAM的资源非常有限,“边解释边执行”往往带来大量的随机卡顿。

最后,顺便说一下iOS的LLVM,LLVM在编程阶段就没有JVM(虚拟机机制),从一开始就是冲着100%静态化去的,虽然Swift掌握起来不如Java语言容易,但在运行机制上讲确实是个先天优势。


heyD优视


个人觉得,这个编译器很难迅速的普及,虽然我们觉得能够提高运行速度,那是非常好的事情,但是统一标准是一件非常难的事情。让要全世界业界都用华为的方舟编译器,华为还没有这么大的影响力,特别是在西方抵制华为的封锁的情况下,如果是局部用,毕竟它不是官方的兼容性很难得到保证。毕竟谷歌才是安卓之父,这事如果让谷歌来做,就会容易得多,华为在别人的地盘做事,必定要受到他人的限制。安卓系统最重要的不是它的运行效率,快很慢。以现今现在的硬件速度,即使是边解释边执行也没有问题。最主要的是它的生态系统的强大。这也导致很难再有一个第三方的手机操作系统能够普及。总之华为要做大做强,只能自己开发手机系统。不再受制于人,这才是终极解决方案。到那时我们才能说谷歌算个屁。


晨星144527486


关于华为方舟编译器,你怎么看?没想到P30发布会上竟然有这么一个黑科技诞生,以前没有一点儿消息透露出来,看来华为是保密到家。华为方舟编译器的出现,可能是华为为了自己的终端建设生态环境而布的局,也许华为的底层更为优化的系统或者甚至是自己系统的推出可能真的不远了。

华为不但自己可以从底层优化操作系统,使得系统更为流畅。而且给APP开发商也开放开源,个人认为这会赢得开发商的积极支持。开发商巴不得自己开发的APP能够快速响应流畅运行,没有卡顿,从而可以赢得更多的用户或客户,是开发商愿意使用的。只要有人使用这个工具开发出软件,那么在华为手机系统上的运行优势就更能体现,可能会为华为带来更多的终端用户。

余承东发布会上号称方舟编译器实现了架构级的优化,能够让操作系统流畅度提升24%、系统响应提升44%、第三方应用操作流畅度提升60%。是全程执行机器码,解决安卓“边解释边执行”而造成的低效率。

按照这样的提升速度,如果把这些应用到华为自己的操作系统上,是否速度及流畅度的问题就解决了呢。是不是会对苹果形成较大的压力呢?以前看重苹果手机iOS系统的用户是否会有转向到华为的念头呢?即使是自己开发操作系统,也极有可能并不会输于iOS。


也许方舟编译器只是个开头,接下来华为几年之内说不定还有更大的动作出现。


更多分享请关注【东方高扬】。


东风高扬


我知道这种编译器有人说跟Lollipop和M的ART一样开历史倒车,但是我感觉不是一个概念,华为有两把刷子啊,有方舟编译器,开发者对华为粘性增大,增强开发效率,谷歌把华为踢出安卓华为也能应对,这布局套路真的强,有华为Google算个P

以上结论均为个人分析,至于具体的方舟编译器实现流程还要等11月份开源才知道,至于GPU Turbo那也可能就是那,不开源只能猜测。也就是猜的像不像问题


云谷小影


为了更客观地回答这个问题,我特意去找方舟的源代码,试图更好了解其内部原理。可惜找到的全是发布会,新闻,以及如何如何颠覆云云。满满的中国风,实在是有点失望!或许是 现在受到太多关注,光芒太多,原本对他们来说只是一个将自己的一个优化工具开放给开发者使用,却被寄于太多期望或者过分吹嘘。当然华为的这种开放在较大的格局下对 的战略应该是更有利的。

但是媒体似乎更愿意放大“华为做编译器”的新闻,因为这关乎到所有开发者,是软件生态的次级战场,而且是不亚于系统的战场!因为它直接影响开发者的创造能力,直接影响软件生态圈。华为目前的生态依旧是基于安卓,可以说还是背靠美国的Google,发展越强,其实背后越有价值的还是谷歌!

在操作系统层面,大家基于Linux做都可以相安无事,因为Linux足够开放自由。但是Android不同,他的开放是被谷歌牵着走的,越开放,越有利于建设生态系统,最终安卓也会越有价值。也正是这种开放生态系统,原来在神坛之颠的封闭商业系统现在基本已经消亡(比如诺记的那个,但iOS和macOS并不属于完全封闭商业,苹果体系下有很多对开源友好的生态入口)。而在操作系统层面一般厂商也很难有可图了,需要更大的局,更多的资源,更长远的打算,更强大的商业意志,才有可能去深入操作系统的研发。华为是有这样资本和意志研发操作系统的极少数大厂。

但华为的手机业务目前极度依赖安卓,哪怕他再想要,也很难下决定自己做操作系统。因为背后更重要的是软件生态系统,这才是最强大的商业护城河,有了这个生态系统,操作系统才能活!当时苹果建立在iOS之上的AppStore似乎无法撼动,其强大成就了苹果的伟大。要复制苹果的生态,走他的路几乎是找死,且不说能否达到他的行业水准。但是要再做一个软件生态系统,走一条岔路,那是有可能的!这也是为什么当时苹果电脑都那么优秀了,还是被微软抢占了PC市场,以至于乔布斯当时破口大骂微软比尔盖茨;iOS和AppStore都那么优秀了,还是被谷歌的Android抢占了巨大的移动市场,以至于当时乔布斯见到Android破口大骂谷歌。

苹果电脑的封闭授权,给其他硬件厂商带来痛点,给微软带来机会;苹果手机的封闭,给谷歌和Android带来机会。商业上要与强大的对手干,就要走不一样的路。你封闭,我就选择开放!微软将开放的殷勤献给了当时PC硬件厂商(苹果是自己做操作系统和电脑硬件的,几乎不给其他人机会),成就了PC硬件厂家和微软自己,才有了现在的PC加Windows这个“事实上的标准”“电脑”(de facto standard)。谷歌拥抱开源,将开放的姿态发挥得更高级,向全世界开发者和手机厂商献媚,诚意十足地献出Android,成就了如今的安卓系统。才有了后来中国山寨机的崛起,诺基亚手机的陨落,以及后来我们熟悉的各大手机厂商。可以说,谷歌的开放,是在联合全球的手机硬件厂商和开发者跟苹果对着干。源码的开放同时迎合了硬件厂商和诸多开发者,拥抱了开源社区。

安卓的生态经过这么多年的厮杀,已经进入我们生活的方方面面。华为手机业务背靠安卓,若想要再造一个系统,无异于将自己放于一个看不到尽头的深渊。在这里,你不能用他们走过的路自己重走一边,然后报“颠覆”的幻想,这是极度危险和痛苦的。好在华为手机似乎看到这点,所以依旧拥抱在安卓生态圈,在里面的一环发力。(这点也与当时联想做安卓手机不同,联想当时做安卓,拿来谷歌等源码就想另起炉灶,与谷歌直接对着干,结局大家已知)

回到主题,在软件生态系统里面,除了操作系统,剩下最有力量的武器恐怕就“编译器”了,或者称为“开发工具”,不幸的是开发工具也是一个进入门槛极高,甚至可能吃力不讨好的领域。但是一旦做起来,其威力不亚于谷歌的安卓,微团的视窗。因为他让厂商有机会截胡,笼络开发者,从而影响生态圈的源动力,甚至可能让一个系统原厂边缘化(当然现实中这是几乎不可能的,因为系统原厂也在推动原生的开发工具,而非一成不变)。

所以先不论华为方舟是一个怎样的编译器,是LLBM那个量级的,还是简单的针对Java字节码的静态优化工具,结果恐怕还很难说。但是可以想象的是,华为一直在寻找最佳的突破口,而这次编译器,我觉得是一个很好的突破,但是不要轻易谈“颠覆”,我想这些语言应该出自媒体而非华为之口。

那华为如果只是优化应用的运行时(并非LLVM那个量级的编译器),抛开谷歌的运行时和虚拟机(如ART,Android Runtime),会发生什么呢?当然静态编译可以得到很大的性能优化,但是其缺点也显而易见:极大的加大了应用程序的体积,应用转为依赖华为的底层库。

当然这两个痛点在华为手机上根本不是问题,因为自家手机,配上自家优化工具,这两点可以避免。但是要移到其他手机呢?恐怕会成为开发者维护的噩梦!因此对于整个安卓生态来说,难说有重大“颠覆”。还是得和安卓一起走。

但对华为来说,开放这种工具对成就未来的自己是有诸多好处多,一方面这类工具让开发者的应用可以对自家手机表现得更加优秀。另一方面,如果开发者的应用如果被安装到其他手机,哪怕有问题也可以让用户感觉到华为手机“更好”,因为这个应用在华为手机上跑得更快,在你的XX手机上慢如蜗牛!

简单地说,华为开放这个优化工具(编译器)给开发者,可以更好的将开发者和用户绑定到自家手机上,随着时间的推移,让更多的应用在自家产品产生差异因素,让华为(和方舟编译器)进入人心。

至于对未来生个生态的影响,恐怕难说的很,尤其是在编译器这个领域。方舟到底是个系统级的编译器,还是个优化工具?这个问题留下来给读者你。


勿与君子斗名


卵用没有。。。java源码不可能能直接编译成可执行文件。


taleair


朝自主生态进发。


分享到:


相關文章: