华为更新的方舟编译器怎么样?

spider 全部 1045

华为更新的方舟编译器怎么样?

回复

共17条回复 我来回复
  • 大学生编程指南
    大学生编程指南
    这个人很懒,什么都没有留下~
    评论

    谢谢邀请,

    华为的方舟编译器是十年磨一剑的结果,算是一种工匠精神的极致体现,因为从安卓诞生到流行至今天谷歌的精英军团一直没有间歇的在优化安卓的性能,但始终没有跳出java虚拟机这个圈子,华为的方舟编译器这次是真的做到了,这次华为的开发者大会算是真正的开源方舟编译器,至2020年代码将全部开源,方舟编译器将是安卓系统技术性的革命,其本质意义已经超出了一个编译器的范畴,准确来讲算是一个编译体系,方舟编译器真正做到了将动态编译做成了静态编译,生生的把虚拟机在动态运行过程中需要的各种条件采用不同的技术手段给实现了,在全球范围内真正有实力做这个事情,并且做成功的只有方舟编译器。

    在华为开发者大会进行之前与余大嘴转载了一篇《华为新贵!方舟编译器的荣光和使命》的技术文章,里面详细阐述了方舟编译器的前前后后发生的一些事情,并且获取到了方舟编译器内部专家的访谈得出的第一手的资料信息,并且用长达万字的文章给战术出来的,这时候外界才对方舟编译器有了一个大致的认识过程,今天作为一个在在安卓系统本身开发多年的技术人员角度分析下方舟编译的一些技术点,以及在具体技术上有哪些突破。

    方舟编译器的前世今生

    方舟编译器的起源并不是直接上来就是针对谷歌的安卓下手的,还是源于华为对5G技术的重视,从2009年华为就投入大量的技术研发人员进行5G技术的基础性研究,开始对编译体系进行研究,这个时候才开始部署第一批的研究员,从技术层面上讲任何一项新的技术突破都需要经历的一个萌芽期,原始的积累期,这是任何技术都绕不过的问题。

    大约研究了四年的时间大约在2013年在面向基站的编译器HCC框架成立,算是华为完成了编译器体系的理论到实践的过程,算是华为公司在编译器领域有了一个完整的积累,正是有了这次的积累和成功的经验,开始从5G领域慢慢的向消费电子领域过度,对于技术而言只要是一个方面突破了在基础理论接近的情况下就可以向别的领域渗透,这次率先在5G基站突破,开始为华为别的部门服务,于2014年正是成立方舟实验室,承载的目标任务就是优化提升安卓性能,更加直接的任何就是如何拿掉java虚拟机。

    不会虚拟机运行安卓系统,恰恰是方舟编译器最大的技术革命,终于在2017年的时候第一个hello world程序跑通,这时候技术框架的雏形已经形成了,从理论上讲抛开虚拟机直接将字节码静态变成机器码,就需要提前预知动态执行指令的动作,难点就在于此其实方舟编译器只是将这部分的苦力活用穷举的办法给做到了,但是不是真正意义上的穷举,而是在建立了一个查询库,将所有的规律以及语法细节逐个击破,在2018年移植到手机上,2019年在P30手机上对外宣布了方舟编译器,这才是真正意义上的方舟编译器,只是想象中间就有很多的技术细节,熟悉java虚拟机的都应该知道,里面运行的机制可不仅仅是完成字节码的编译这么简单的事情了,最大的突破在于第一个hello world代码的运行成功。

    方舟编译器都有哪些技术突破

    在讲述这个之前先来了解高级Java工程师必须要掌握的虚拟机技术,虚拟机技术的核心

    (1).字节码翻译成机器码,这是虚拟机最基础的工作原理

    (2).垃圾回收机制,就是我们常说的GC,在平时写代码的过程中围绕着如何如何更好的方便内存垃圾的回收,需要注意很多的编程细节。

    (3).在安卓系统上还多了JNI机制也影响到整体系统的性能问题

    (4).中间二进制文件优化空间有限

    其实就是讲到在java在为了跨平台操作还是牺牲掉一部分的性能,在功能强大的服务器端未必能够展示的这么明显,但在移动手机端这块影响就比较大了,所以针对这些问题,在安卓设计之初还是有人提出了java运行效率慢的问题,但由于后来安卓生态越来越完善这种声音变得非常渺小了,因为只是喊不能改变实际的事实,方舟编译器直接指向了安卓很多性能的缺陷

    那么方舟编译器都有哪些技术突破?

    将java代码直接静态编程然后导入到机器码运行。这相当于颠覆了很多固化程序员的认知,java的虚拟机是java运行的必要条件,这也是方舟编译器最重要的技术突破,未来可能推动java的发展更新,对于java编程语言有极大的促进作用,从2014年具体操作这个事情到最后hello world的运行,用了3年的时间,终于完成了突破,这个突破在于提前分配好动态工作时候的对应的指令,这个工作除了大胆之外更多是苦力活,现在的关键是华为公司已经在手机上验证通过了,这就是长期积累的结果,也在间接的推动安卓生态链的完善,所以谷歌也不会舍得华为站到对立面上去。

    优化垃圾回收机制。原来的java虚拟机会根据一定的算法时机触发,但存在回收时系统卡顿的问题,方舟编译器采用了RC机制,就是C++经常使用的引用计数方式,并且专门设置了一个消除环算法来优化这种机制,相当于碎片化的消除内存垃圾,同时还能支持单个应用内存的消除,这对一些内存清理工具是一种极大的福利,有助于提升整体的优化空间。

    解决JNI混合语言造成的开销。在安卓系统内部引入了jni机制根本上就是为了方便java调用C/C++函数,引入这个机制的同时造成了系统性能的下降,方舟编译器相当于把多种语言混合在一起的规律给吃透了,又是一次看着像是做苦力一样的工作,但其中隐含着巨大的工作技巧,不是每个团队做这样事情都有结果,敢于向困难亮剑保持怀疑一切的工作态度,这块涉及到对中间二进制规律的研究,毕竟在IR阶段能够梳理清楚代码运行轨迹等等。

    在统一IR之外修改优化。这块灵活性非常大了,可以在云端计算优化,也可以在开发真本身的开发环境中优化,所以优化的力度还要根据实际情况。

    方舟编译器会带来多少影响

    方舟编译器会直接解决的是安卓的卡顿问题。对于提升华为手机的用户体验是一种极大的提升,但对友商来讲到底是用不用方舟编译器,怎么讲都是挺尴尬的一件事情,其实在技术领域更多是树立了一个标杆,不要什么事情都约定俗成,其实回归到问题本身来讲,主要肯下功夫去做,时间会证明一切,也是典型的工匠精神的一种有效体现。

    有助于构建华为生态系统。华为发布的鸿蒙系统就是为了构建生态,方舟编译器也在推动着这件事情的发展,拿出最好的技术来分享给大家,让大家围绕着这个系统来共同发展,鸿蒙系统也是开源系统更是另外一种生态机制,也是为了构建更大的物联网体系。

    方舟编译器更像是对传统编程语言的创新,对于技术人员的启发更大,这是把java虚拟机给生生拿掉了,所以从技术层面来讲还能有华为公司做不到的事情嘛,凸显了华为公司强大的技术研发能力,现在还有厂商在回应华为开发者大会有很多不成立的技术,先把口号喊出来然后激励自己加倍努力工作,这些年华为吹过的牛皮随着时间的推移都慢慢实现了,踏踏实实研究技术才是一个科技公司该有的基因,希望能帮到你。

    2019-08-12 13:59:33 0条评论
  • kuo爱的喵喵
    kuo爱的喵喵
    这个人很懒,什么都没有留下~
    评论

    红芯浏览器第二。

    2019-04-15 07:52:41 0条评论
  • 暴躁的暴哥
    暴躁的暴哥
    这个人很懒,什么都没有留下~
    评论

    严格来说,华为的方舟编译器其实就是让安卓手机更接近iOS的模式。

    具体怎么样不评价,但是目前看来效果是有的。

    再一个,方舟编译器大概率是鸿蒙系统的预备编译器,华为大力推广方舟编译器也是为鸿蒙系统打下基础。届时相信有非常简便的转换应用的方式,方舟编译器必然功不可没。

    不过理性看待,有技术归有技术,也不是什么特别沸腾,改变世界的事情。

    2019-08-12 10:25:47 0条评论
  • 爱生活的大看世界
    爱生活的大看世界
    这个人很懒,什么都没有留下~
    评论

    好用

    2019-08-11 18:05:49 0条评论
  • 北纬33度3
    北纬33度3
    这个人很懒,什么都没有留下~
    评论

    没用过,不知道

    2019-05-06 14:15:32 0条评论
  • 北纬33度3
    北纬33度3
    这个人很懒,什么都没有留下~
    评论

    没用过,不知道

    2019-05-06 14:15:32 0条评论
  • 时光之心15
    时光之心15
    这个人很懒,什么都没有留下~
    评论

    华为手机最近系统更新了一个叫“方舟编译器”的东西,这东西很不错,但严格说不叫编译器,更新的东西是个java虚拟机,叫做maple,说实话,里面没有什么吓死人的黑科技,只是对很多很多细节做了改良,但是,能把这么复杂的系统的这么多细节做了做了非常有条理的改良,本身就是吓死人的黑科技,我觉得他的黑科技程度比现有国内手机厂商的所有黑科技都黑。

    “真正”的方舟编译器在哪?未来(现在还没公开)会出现在程序员的电脑上,因为“方舟虚拟机”的很多改良特性是不兼容标准安卓的,所以要特定的编译器

    另外,吐槽一点,谷歌把安卓系统做的太糙了,很多地方都是点到为止,典型的学霸思维,心想这么简单的东西我已经给出大体框架了,厂商轻松补充补充就行了,国内厂商拿着955工资的三流996程序员(拿着三流的工资怎么可能招到一流的人才):我看不懂,我没能力改,我改了还没不改好

    然后华为就有了这次的“可乘之机”

    2019-08-12 20:14:15 0条评论
  • 华e科技
    华e科技
    这个人很懒,什么都没有留下~
    评论

    厉害不厉害,其实很明显。看看为啥做安卓的谷歌没有做出来,就知道了。

    2019-04-13 02:01:34 0条评论
  • 互联网活化石
    互联网活化石
    这个人很懒,什么都没有留下~
    评论

    我按照网传的查一下专利,专利号:2015800097067

    查询地址:http://cpquery.sipo.gov.cn/

    但是跟宣传的说的不是一个东西。看下他的宣传,说是方舟是绕过虚拟机,从边翻译边执行到提前编译机器码直接执行。

    现在这个东西还没开源,具体的实现原理没人清楚。大部分都是猜测,猜测是一种类似ART的技术,或者针对他自己的麒麟平台专门优化过的,有点类似iOS那样的软硬件结合。

    2019-05-06 14:53:30 0条评论
  • 爱生活的大看世界
    爱生活的大看世界
    这个人很懒,什么都没有留下~
    评论

    好用

    2019-08-11 18:05:49 0条评论
  • 未来无限可能ing
    未来无限可能ing
    这个人很懒,什么都没有留下~
    评论

    鸿蒙是一整套系统,包括手机系统、电视系统、车载系统、智能家居系统等等,使万物通过鸿蒙连接!这是大局!需要5G支持!到时候什么安卓、安吉星等各个平台的现有系统都要死一边!鸿蒙是一个微内核,分布式布局的系统,各个厂家后期可以根据自己的需求配置系统,但是基础核心是鸿蒙,就现在,鸿蒙不考虑app生态可以随时把安卓替换!大家还在讲手机生态,华为直接跳过,人家要做万物互联基础!!华为为什么一直都不谈手机要做生态,一个太难了,一个层次太低,直接跳过,这就是弯道超车!华为要做万物互联基础还需要很大的努力,之前国人做系统找不到方向,做什么系统都失败,现在有一个方向,就需要国人努力就可以了!国家提供5G互联网的支持,剩下的,就是各大厂商之间的厮杀而已!鸿蒙系统只是算在5G技术里面的一种,中国工业4.0就需要5G这种无通讯延迟的技术!还有,鸿蒙不是一个操作系统,它是一个底层的系统,操作界面之类的需要根据具体硬件去增加,比如手机有手机的操作系统,电视有电视的操作系统,车载有车载的操作系统,智能家居有智能家居的操作系统,但是它们的底层核心系统代码是鸿蒙!

    2019-08-11 17:41:03 0条评论
  • 以行践言爵士人身
    以行践言爵士人身
    这个人很懒,什么都没有留下~
    评论

    目前能做编译器的只有自己,you,处理器研发能力,

    2019-04-13 10:37:28 0条评论
  • IT专家
    IT专家
    这个人很懒,什么都没有留下~
    评论

    一个字“好 ”,打个简单的比方来说方舟编译器相当于我们和一个外国人讲谈,不需要通过翻译来进行语言沟通。

    2019-08-13 15:23:46 0条评论
  • 伪情感专家
    伪情感专家
    这个人很懒,什么都没有留下~
    评论

    首先感谢邀请回答。

    安卓运行app的时候,需要虚拟机中的解释器和编译器同时工作,这样才能把高级语言转换成机器语言,相对于可直接运行的二进制文件,中间多了虚拟机翻译的程序,所以安卓系统的运行效率不高,远比不上苹果系统。

    方舟编译器号称可以优化安卓体统的运行速度,但方舟编译器没有开源,至于怎么绕过虚拟机就不得而知了,但可以肯定的是如果采用安卓编写的程序,必定躲不开虚拟机。

    2019-05-09 18:57:58 0条评论
  • 间歇性顿悟人生
    间歇性顿悟人生
    这个人很懒,什么都没有留下~
    评论

    真心期待试一下。

    2019-04-15 08:51:32 0条评论
  • 没有车就跑吧
    没有车就跑吧
    这个人很懒,什么都没有留下~
    评论

    以后多多使用

    2019-04-13 20:17:45 0条评论
  • MK运维说
    MK运维说
    这个人很懒,什么都没有留下~
    评论

    有备无患,贵在尝试

    2019-04-14 21:11:50 0条评论