余承东三年前“吹牛”华为体验超苹果,方舟编译器将要实现了

  • 来源: 驱动号 作者: 壹观察   2019-04-30/22:25
  • 文丨壹观察 宿艺

    2016年11月华为Mate 9系列发布会后,余承东在媒体专访时首次表示:“华为手机目标在体验方面也超越苹果”。

    此时几乎没人相信。甚至有媒体当场发微信朋友圈说:“嘴哥又吹牛了”。

    即使华为Mate 9系列搭载的EMUI5.0解决了安卓长期使用不卡顿难题,但鉴于安卓系统与苹果iOS之间在运行机制、效率与系统流畅度上的明显差异,“体验超苹果”似乎也只能是个梦想。

    外界不知道的是,华为消费者业务此时已成立了“编译器与编程语言实验室”,目标是将安卓系统底层彻底解构,通过全新编译器从根本上一劳永逸地解决问题。编译器被誉为软件行业的“明珠”,可以说是连接人类世界与数字世界的桥梁,也是计算机与互联网技术最核心的底层技术之一。

    其中的难度、风险与挑战,可想而知。

    时隔两年半,2019年4月11日在上海的华为P30系列发布会上,华为宣布EMUI 9.1首先搭载了“方舟编译器”与“EROFS超级文件系统”。业界猛然发现,华为不仅实现了对安卓底层运行机制的彻底重构,甚至目标通过开源,联合Google、手机企业与开发者共同推动安卓生态的颠覆性“换血”—— 唯有如此,安卓系统从诞生起就存在的“顽疾”才能被根除。

    余承东“体验超苹果”的目标,显然并不是空口吹牛。

    方舟编译器:重构安卓底层

    在此之前,几乎所有安卓手机企业在操作系统方面最大的努力,无非就是争夺安卓最新系统版本的适配速度,以及在其基础上推出的UI/ROM优化方案。

    这相当于对原有安卓系统针对中国市场的修修补补,不仅造成了全球安卓碎片化最严重的市场,并且还因掺杂各种广告收益而被用户吐槽为“ADUI”,相当于负向优化。

    只有华为选择了一条最难、具有极高风险的路:重构安卓底层。

    华为消费者BG软件部总裁王成录博士对《壹观察》透露,相对传统Android系统,方舟编译器实现了对系统底层的四大“换血”:

    第一,业界首个多语言联合优化编译器。

    Android应用市场中TOP级APP,95%以上都是由多种开发语言来实现的。这些APP的逻辑部分是Java代码,但是为了增强app应用的安全性、可靠性、兼容性,开发者会用效率更高的C语言写库,供Java来调用。但跨语言调用,一定会导致额外的性能开销,并且调用的应用越重、开发语言越多,对系统性能的影响就会越明显。

    方舟编译器可将不同语言代码在开发环境中自动编译成一套可执行的文件,直接消除了跨语言调用的开销,大大提升了APP应用在运行环境中的高效执行,这仅仅是第一步。

    第二,干掉了安卓最关键,也是长期被诟病的“虚拟机”。

    Android从诞生起,就是一个开源系统,要面对极其复杂的开发环境与硬件适配宽容度。因此选择了Java这个成熟语言,并由此带来了Java 虚拟机——相当于虚拟了一个Java运行环境,支持跨开发语言与跨平台操作。但同时问题也很明显:任何一个Android手机只要安装应用就会自动配置虚拟机,不仅占用了额外的系统资源,更重要的是,每个应用都需要通过虚拟机来完成对机器码(二进制码)的编译,然后再由虚拟机发出执行命令完成应用服务。

    打个比较直观的比喻,这就相当于虚拟机里有两个翻译在工作,一个需要把法语翻译成俄文,再由另一名翻译成中文,这个过程两个翻译的工作是无法并行的,所以观众听到的内容一定断断续续。也就是说,安卓系统这种卡顿感无法避免,只能优化,但无法彻底解决问题。因此才有开发者说,虚拟机的性能决定了安卓运行瓶颈。这也是Google虽然在后期不断对编译器进行升级,但依旧无法解决系统卡顿顽疾的根本原因。

    同样重要的是,虚拟机的统一回收内存机制也是“BUG”般的存在。安卓初期并没有对开发者有类似苹果iOS严格的开发机制,导致很多开发者都希望自己的应用尽可能地使用最大内存,以获得更好的用户体验。甚至有开发者利用这一规则漏洞,让其APP具备后台强行唤醒功能或者自家应用的“全家桶”唤醒机制。而Java虚拟机模式提供的内存GC(垃圾回收)机制,在内容垃圾集中回收时需要短暂中断应用运行。两种情况在中国市场遭遇,无疑进一步加剧了应用的随机卡顿问题。这也是很多开发者甚至是手机企业自己都不相信安卓手机可以“体验超苹果”的重要原因。

    方舟编译器最重要的革新,就是直接干掉了虚拟机,在开发环境中就完成了全部代码的编译,无论应用编程是由Java写的还是C语言写的,都不需要再次由虚拟机互相编译。手机安装应用程序后,无需再依赖虚拟机资源,即可全速运行程序调度命令完成服务,由此消除了虚拟机动态编译的额外开销,带来系统运行效率与流畅体验上的极大提升。数据显示,EMUI 9.1仅仅对系统组件System Server应用了华为方舟编译器后,就带来了系统操作流畅度提升24%,系统响应性能提升44%。

    当然,虚拟机之前被认为是安卓系统的核心,也是谷歌最敏感的部分。国内之前有其他互联网企业因为想用自己的虚拟机机制进行取代而遭遇谷歌的长久封杀。华为虽然没有进行替换,但却是从根本上改变了安卓系统的核心运行规则,因此谷歌的态度至关重要。

    华为消费者BG软件部总裁王成录博士

    王成录对《壹观察》表示,这实际上要解决两个维度的问题:第一个是作为不同编程语言的“翻译官”,方舟编译器本身的能力怎么样。方舟编译器的最大技术突破,是把动态语言部分全部变为静态编译,其核心是一定要对Java语言动态特性非常深入理解。“就像一个优秀的翻译官一定对汉语言文学理解的非常到位,然后再对英语理解非常到位。”从EMUI 9.1目前带来的系统流畅度与应用响应速度来看,方舟编译器的技术优势非常突出。

    第二个,确实需要谷歌的认可。王成录透露称,谷歌是华为的战略合作伙伴,对华为在系统优化上的能力一直非常认可,之前华为在F2FS的文件系统、安卓优化等方面都获得了谷歌的认同,并且延用至后来版本的系统开发中,让更多的安卓手机企业因此获益。在促进安卓体验升级方向上,华为与谷歌的态度都是开放的。方舟编译器在推动之初,华为就与谷歌进行了深入的沟通,目前EMUI的方舟编译器版本首先在中国市场使用,这个也是谷歌认可的。

    当然,改变整个安卓运行机制甚至是生态,需要谷歌、所有的开发者与手机企业共同推进,这也是方舟编译器选择开源的重要原因。只有生态链产业共同推动,才能真正实现安卓系统体验真正全面超越iOS这一终极目标。

    干掉了虚拟机,意味着系统的内存回收机制也会带来变革。在方舟编译器里,编译时为程序配备了及时回收的内存处理机制,即在程序执行过程当中同步实时处理回收。所以方舟编译器的垃圾回收及时又彻底,并且不需要停止进程,解决了应用随机卡顿这一另外的“顽疾”问题。

    第三,可针对不同应用灵活编译优化。

    如之前所说,翻译器本身做的好不好,同样是决定系统运行效率的核心底层原因,最重要的衡量标准是能不能给程序带来性能的明显提升。

    同样以“翻译官”举例,单独单词直译并不是难点,难得是要翻译的又快又好,还要适合对方语音习惯。比如中文“夫妻肺片”怎么翻译成英文?如果硬翻译,那就是“丈夫和妻子的肺片”,老外们听着会无比惊悚。而美国《GQ》杂志将其翻译为Mr and Mrs Smith(电影《史密斯夫妇》)就很容易理解和记忆了,甚至一度被美国网友评选为“年度开胃菜”。

    因为不同应用的优化诉求不一样,而现有的安卓编译,大部分代码在虚拟机环境运行,虚拟机的创建来自于同一套“模板”,难以作深度的优化。方舟编译器不一样,每个应用编译优化方案可以自定义,分别形成不同应用优化后的机器码,相当于说,我们给每一个有追求的应用开发者,都有了一个把自己的应用做得更好的机会,不再受限于Android虚拟机的限制。

    方舟编译器通过了大量的优化和调整,一方面对Java语言深入了解后再细致重建,另一方面对机器指令顺序结构理解要求非常清晰,这两方面的匹配度越高,编译器效率越高。一个好的编译器,开发者一行代码都不需要修改,性能提升10%到20%。

    第四、开发者学习和使用成本低。

    做操作系统的微软,在Windows Phone上为何会失败?其中的原因很多,但开发者学习和应用迁移成本高,收益低是其中一个非常重要的原因。包括三星、英特尔等企业,以及中国互联网企业在内也都在移动互联网时代初期推出了各种操作系统,但无一成功。开发者的支持与应用生态丰富度,是绕不过去的门槛。

    《壹观察》特意向王成录问及了这一问题。王成录回答称:方舟编译器从多年前决定做的那一刻起,就立下了“上层业务代码不需要改动,开发者只通过华为方舟编译器做可以重新编译”的目标。现在开发者不论用Java语言去开发新的APP,还是自己写的C语言库,这两种方式都不需要变,在开发构建阶段就为开发者提供快速的集成编译环境,降低了开发者学习和使用成本。

    王成录还对《壹观察》透露称,在方舟编译器发布当天,华为软件的开放实验室 电话被开发者打爆了,业界在安卓顽疾问题上的关注度之高,远超之前想象。

    华为“软能力”的“十年磨一剑”

    华为过去给的外界印象,一直是“科技硬核”企业。

    EMUI领域的巨大进步,让大众用户越来越多的感受到华为科技的“软能力”。

    华为在EMUI方面的投入,最早是2012年开始的,也就是决定华为手机业务未来的那场“三亚会议”之后。华为创始人任正非在会议上提出:“我认为在终端上,我们创新不够、能力不够,自己要抓住自己的优势... ”,“要好好想想,我们的战略是什么,怎么才能胜利”。

    之后被业界广为所知的是,华为通过P1、D1、Mate 7、P9、Mate 9、P30等一系列硬件机型的“不抛弃、不放弃”地持续奋斗。华为软件能力,同样是其中最重要的支撑部分,“板凳要坐十年冷”的坚持与努力同样值得肯定。

    外界对华为手机“软能力”的密切关注,首先是从EMUI 5.0开始的。在完成了硬件的初步重大创新之后,华为就清晰地意识到安卓系统的顽疾问题,将是自己与苹果进行用户体验较量中未来至关重要的短板。

    华为为此确定了两步走战略:第一步,是要“剖解”安卓,真正掌握底层核心技术,这就有些像是中国歼11战机对苏27战机的“逆向工程”。

    从2015年开始,华为开始“花大力气”构建自己的操作系统底层研发能力,最核心的是把系统软件架构做了更好的重建,将系统底层、中间层,以及应用层之间的分割更为清晰。将一些华为需要的模块进行底层优化和增强,实现Android系统“每一个模块代码华为都清晰掌握”,并在此基础上开始具备自己真的是系统底层“换心手术”式优化。从用户端带来可感知的体验就是“天生快一生快”,以及“ EMUI 5.0的18个月不卡顿”。

    要知道,Android系统本身并不只是为智能手机定制,系统代码超过1亿行,非常臃肿。华为为此投入了超过数百名系统工程师进行“定向攻坚”,仅此一项投入就超过了很多国产手机企业的全部软件研发人员。配套的研发硬件环境投入也是惊人的,仅老化测试装置成本就超过5000万美元。在EMUI 8.0发布之后,连Google都认为这是一项“非常有挑战”工作,并在之后的Android系统版本升级中借鉴了华为EMUI的经验。

    第二步,则是从编译器的底层技术完成对安卓的重构,包括干掉之前被谷歌视为安卓核心的虚拟机。

    王成录在接受《壹观察》专访时透露,华为在翻译器上的投入,最早始于十年前。2009年华为就创建了编译组,因为海思做了芯片以后,需要有自己的编译器才能真正发挥芯片的能力。从2013年开始,华为推出了自己的编译器HCC,用在基站领域,这可以说是方舟编译器的前身。到了2014年,在王成录的“三顾茅庐”之后,以Fred Chow等众多“大神级”的编译器领域的资深专家加入华为,同时大批清华、中科院的博士加入,搭建了华为编译器的主架构。2016年,有了成功的实践经验以后,华为2012实验室成立了编译器与编程语言实验室;2019年4月,终于推出了华为方舟编译器。

    也就是说,即使华为这种在技术上投入最多的科技企业,在方舟编译器这一“软件行业明珠”的重投入也已超过了十年。背后是华为一代软件研发人员的青春与大技术理想主义,这是一个真正的“板凳要坐十年冷”的巨大研发工程。甚至可以说,这是继海思处理器之后,华为终端终于在系统软件方面也具备了真正的行业领跑与创新能力,而不仅仅是“甩别人一两条街的技术突破”。

    迈向全场景智慧化生态:华为目标远不止超越苹果iOS

    华为EMUI 9.1首先搭载的EROFS超级文件系统,同样是华为“软能力”的一个重要体现。但方舟编译器的光芒,让外界有些忽视了它的重要作用。

    EROFS超级文件系统是伴随着存储介质的发展一步一步走过来,存储介质不断的演进,让这个文件系统不断的跟着演进,数据在这个存储介质上存储读取更好更快更安全。2016年搭载EMUI 5.0的华为Mate 9,首次在业界规模商用F2FS文件系统,替代了传统的EXT4文件系统,令用户分区的文件读写流畅度提升20%。EROFS超级文件系统通过高效的压缩算法加持,带来随机读性能提升,EROFS的做法是保证每次压缩一块,正好是一个固定大小的存储块(即压缩后的文件和存储的最小单元边界一致),这样几乎没有浪费,不仅性能提升随机读性能的20%,ROM空间还节约了2GB。以华为P30 Pro 128G为例,系统初始空间相比Ext4节省2GB,相当于用户可以多存1000张照片或500首歌曲。

    谷歌之前在安卓上使用的Ext4是一个读写双向的文件系统,为了防止读写系统区,要加两把锁才能锁住。这两把锁加上,这个机制就变得更复杂了。EROFS超级文件系统天然只读设计,系统分区不可被三方改写,因为一旦系统区被写就意味着系统被攻破了,所有运行管理保证它的正确性,所以不能被改写意味着更安全。

    也就是说,从EMUI 9.1开始,华为手机上的安卓系统不仅更流畅,对开发者和用户体验更友好,而且更安全。这三个方面,都是传统安卓相当于苹果iOS的弱项。

    随着外界对华为“软能力”的深入了解,一个困惑的问题是:华为实际上已经完全有能力自建一套操作系统,华为内部是不是存在另一个“Plan B”的系统备案?近期包括任正非、余承东在内,也都在接受外媒采访时肯定了这一消息。当《壹观察》问及这一问题时,王成录笑称:“操作系统从技术上对于华为来说不是问题,难点在于丰富的生态”。

    这一回答,实际上也可以从另一个维度推断出,华为正在用自己的系统级核心技术能力,来对安卓进行剖解、组建、重构,从而推动解决安卓从诞生以来就存在的“病根”。这就很好理解在华为方舟编译器发布同时,余承东宣布将此项技术面向全业界进行开源。因为华为明白,EMUI如果要完成对iOS的全面超越,不仅仅要依靠自身对系统底层的核心技术突破,同样需要开发者与合作伙伴的共同推动。

    更令《壹观察》关注是,华为在软能力上已经深入到编译器这一连接人类世界与数字世界的桥梁的核心底层技术,其目标应该远不止是智能手机操作系统体验超过苹果iOS这么简单。因为面向5G、AI、IoT等重大技术融合变革,一个可以清晰预判的未来就是:以iOS+本地APP主导的苹果移动互联网生态,正在被万物互联时代“无处不在的场景化智能服务”所取代。那么华为EMUI又会走向什么样的未来?

    这个问题实际上已经有了答案。

    余承东最近在一次媒体专访中直言:“未来五到十年,华为消费者业务的核心战略就是全场景智慧化生活体验升级,不是之一而是唯一”。

    在此之前,华为已将 HiAI智慧终端计算平台,通过芯、端、云三个层面向外界开放。Huawei HiAI开放能力不断增强,支持算子数量增加至147算子,API上线数量增加33个API,接入原子化服务超3200项。已经有很多合作伙伴利用HiAI开放平台给消费者提供了很多创新体验,比如Storysign利用HiAI的API能力帮助残障人士进行无障碍的阅读。通过开放的全球生态系统,以及1400+生态合作伙伴和560000+的开发者,用户将会获得更多更丰富的智慧场景体验。

    HUAWEI HiLink平台目标连接全球最广的IoT硬件设备覆盖,HUAWEI Ability Gallery快服务智慧平台目标在多场景和多入口精准分发第三方的直达服务。

    而跨系统、跨硬件终端的方舟编译器,可以帮助所有智能硬件企业、开发者与系统厂商,更高效的连接起硬件、数据、与服务,共同构建一个全场景智慧化的万物互联时代。

    这也是苹果想迈出,但受制于封闭的iOS体系目前无法迈出的一步。

    这应该才是余承东“体验方面超越苹果”的精彩未来。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交
    文章数: {{userinfo.count}}
    访问量: {{userinfo.zongrenqi}}

    驱动号 更多