华为的方舟编译器一直以来都是行业瞩目的对象,作为中国企业首度研发的编译器产品,如果能够顺利启用,那么未来中国科技行业很多地方都可以不再受制于人,是非常关键的一个技术产品。
这么重要的技术,其研发从来不是一件简单的事情,也绝非用短短一两年功夫就可以做到了。其实早在10年前,华为就组建了一支由海内外尖端研发人员组成的编译组,而4年后,华为推出面向基站领域的编译器HCC,并正式提出编译器框架构想。到2019年才正式发布方舟编译器,足见华为的谨慎和项目的困难。
而在8月31日,华为方舟编译器正式宣布开源,框架开源代码公之于众,可以说是引发了行业的关注和震动,也迈出了自己重构核心生态的关键一步。
方舟编译器开源,华为自主技术与开发者生态再进一步
本次方舟编译器开放的框架代码包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现Java程序到aarch64汇编指令的编译过程。开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译。社区参与者可以通过框架源码学习方舟编译器的编译器中间表达(IR)及基本的中端编译框架,熟悉方舟编译器的架构思想,并参与诸如对编译器中端优化的贡献。同时华为也上线了自己的开源社区,并在努力引入更多的国内技术大厂共同进行建设,这也是行业的一件大事,说是一个时代的开启也不为过。
而方舟编译器对开发者、对华为、对手机厂商的研发部分而言,也有着格外的价值和意义。因为,从安卓系统问世至今已经有11年的时间,然而,安卓的诟病却十一年如一日的未解。一方面,对用户来说,始终感觉低了苹果手机一头,用一段时间之后往往就会出现卡顿等问题。另一方面,对开发者来说,随着安卓系统的不断大幅升级迭代,碎片化系统和机型越来越多,开发的效率和成本代价也日趋增加,繁重的开发任务也让开发者有苦难言。
而究其原因,主要在于Java的“虚拟机”机制。安卓系统初期为了吸引开发者,选择了开发者使用较多的Java语言,并使用虚拟机来运行应用。在虚拟机里,还需要集成翻译器或者编译器,来将Java的字节码(即中间代码)解释成机器听得懂的机器语言,或者直接编译成机器直接执行的010101的机器码。这个边解释边执行的过程,就是安卓不够流畅的原因之一。虽然在2014年10月,谷歌推出了Android 5.0版本,将虚拟机从Dalvik替代成ART(Android Run Time),并对Dalvik的纯JIT编译方式做了改进。但安卓手机的体验仍然不如苹果手机,在使用APP的过程中,用户总是觉得安卓手机比苹果手机要慢。
而具体到此次开源的华为方舟编译器,其一大突破就是不再需要依赖Android的ART虚拟机,有望解决安卓虚拟机存在的性能问题可以说,华为方舟编译器的开源,对华为手机、开发者和其他手机厂商来说,都是一次颠覆安卓传统“恶习”的革命,也是华为自主技术和开发者生态的再进一步。
华为方舟编译器将为开发者打造“五星级”开发环境
华为方舟编译器作为中国自主技术研发的编译运行系统,从官方宣传中可以看出其定位的是面向开发者的支持多语言、支持平台的编程平台。也就是说未来应用开发将使用方舟编译器的相关部件,包括编译器、调试器、调优工具,并且通过支撑多语言、消除跨语言的调用开销,帮助开发者在选择编程语言时不用再纠结语言的性能问题。对多平台的支持,也将帮助开发在未来的多端设备开发上,始终使用同一套编程平台,不用在不同的开发平台间来回切换。这也相当于为开发者打造了一个“五星级”的舒适开发环境,不再为传统的终端程序开发而“心塞不已”,可以更省心、高效的进行各种程序应用的开发、调试和升级迭代。华为方舟编译器还直接将编译器的代码优化搬到了开发者环境,不再被手机端的硬件资源所限制,这更是让数以万计的开发者为代码优化提供了无限可能。
有知乎网友大胆猜测,“华为的野心是,Java、Java、Python、C、C++都要翻译到Maple IR,并且Maple IR是为了在芯片上运行做优化为目的的语言。”
另有专业网友发帖称,“今天把官方给的(方舟编译器)文档和源代码都解读(翻译了)一遍,目前读下来的感觉是:把Java的类、接口、异常处理、都做了,工作量真的挺大的。国人自己搞一个这么硬核的项目,在以前是没有的。能把Java翻译到自己设计的语言上,再执行对,太难了,工作量超级大,可以说国内做这种级别的东西,可谓是第一次。”
也有人直言,“(方舟编译器)这种级别的控制复杂度,和建立抽象的能力,以前貌似是只有老外这么干过”,“就算搞个跟国外进化下来的最强开源的,一样牛逼的,只要是自己一行一行写起来的,那已经很吊了”。
华为的一小步,行业的一大步,自主技术创新大生态时代已然到来
值得一提的是,开发者使用方舟编译器,并不需要改变原来的编码习惯。开发者可以自行开发代码优化算法,也可以仅通过方舟编译器预置的算法进行代码优化。而未来,华为还将提供代码调优工具,开发者可以选择根据工具的优化建议来调整代码,和方舟编译器配合获得更优的执行效果。
不难预见的是,随着未来数以万计的开发者使用方舟编译器,手机用户的体验也将在不久之后达到一个前所未有的高度。而这对于整个终端生态,可以说华为都是做了一件世界前所未有的大事件。
从技术突破上看,华为方舟编译器团队是基于多个编程语言的深刻理解和大量研发积累,将混合语言开创性的实现了统一的中间表示IR,这就相当于同一个人能够理解全世界的语言。而这,可以说更是华为自主技术创新的又一次革命性突破。
根据华为在开发者大会上公布的信息,作为鸿蒙OS的重要工具,方舟编译器从今年开始,将持续进行开源。譬如,明年计划开放Java编译器工具链,支持Java程序编译;后年则计划开放对Java语言的支持能力,用于JS应用的编译。
值得注意的是,不仅方舟编译器,就连华为的鸿蒙OS也将陆续开源。而华为通过这种持续的开放、开源,正是在将自身十多年来的研发成果和技术能力不断贡献给行业,同时在开源社区中,吸引更多的开发者参与并贡献自己的力量,藉此共同推进中国自主技术和开源盛世的发展。
整体来看,对于华为这样的超级技术型企业而言,方舟编译器的开源可能只是一小步,但是对整个行业而言,对世界舞台而言,却是十足的一大步,是对中国乃至全球开源领域的强势引领。可以期待的是,以华为的实力和眼光、高度,华为势必还将持续拥抱开源,更有望继续在主流基金会及开源社区中积极贡献,进而为全球亿万开发者进行更深入、更全面的赋能,最终引领一个自主技术创新大生态时代的全面到来。
免责声明:此文内容为第三方自媒体作者发布的观察或评论性文章,所有文字和图片版权归作者所有,且仅代表作者个人观点,与极客网无关。文章仅供读者参考,并请自行核实相关内容。投诉邮箱:editor@fromgeek.com。
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。