600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 华为更新的方舟编译器怎么样 – java – 前端

华为更新的方舟编译器怎么样 – java – 前端

时间:2023-10-31 01:10:20

相关推荐

华为更新的方舟编译器怎么样 – java – 前端

谢谢邀请,

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

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

方舟编译器的前世今生

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。