華為的方舟編譯器一直以來都是行業(yè)矚目的對象,作為中國企業(yè)首度研發(fā)的編譯器產(chǎn)品,如果能夠順利啟用,那么未來中國科技行業(yè)很多地方都可以不再受制于人,是非常關(guān)鍵的一個技術(shù)產(chǎn)品。
這么重要的技術(shù),其研發(fā)從來不是一件簡單的事情,也絕非用短短一兩年功夫就可以做到了。其實早在10年前,華為就組建了一支由海內(nèi)外尖端研發(fā)人員組成的編譯組,而4年后,華為推出面向基站領(lǐng)域的編譯器HCC,并正式提出編譯器框架構(gòu)想。到2019年才正式發(fā)布方舟編譯器,足見華為的謹(jǐn)慎和項目的困難。
而在8月31日,華為方舟編譯器正式宣布開源,框架開源代碼公之于眾,可以說是引發(fā)了行業(yè)的關(guān)注和震動,也邁出了自己重構(gòu)核心生態(tài)的關(guān)鍵一步。
方舟編譯器開源,華為自主技術(shù)與開發(fā)者生態(tài)再進(jìn)一步
本次方舟編譯器開放的框架代碼包括編譯器中間表示(IR)和語言編譯實現(xiàn),同時搭配編譯器其他二進(jìn)制組件,實現(xiàn)Java程序到aarch64匯編指令的編譯過程。開發(fā)者可基于開源代碼+二進(jìn)制,編譯構(gòu)建出編譯器工具鏈,嘗試對Java程序進(jìn)行編譯。社區(qū)參與者可以通過框架源碼學(xué)習(xí)方舟編譯器的編譯器中間表達(dá)(IR)及基本的中端編譯框架,熟悉方舟編譯器的架構(gòu)思想,并參與諸如對編譯器中端優(yōu)化的貢獻(xiàn)。同時華為也上線了自己的開源社區(qū),并在努力引入更多的國內(nèi)技術(shù)大廠共同進(jìn)行建設(shè),這也是行業(yè)的一件大事,說是一個時代的開啟也不為過。
(方舟編譯器整體框架 )
而方舟編譯器對開發(fā)者、對華為、對手機廠商的研發(fā)部分而言,也有著格外的價值和意義。因為,從安卓系統(tǒng)問世至今已經(jīng)有11年的時間,然而,安卓的詬病卻十一年如一日的未解。一方面,對用戶來說,始終感覺低了蘋果手機一頭,用一段時間之后往往就會出現(xiàn)卡頓等問題。另一方面,對開發(fā)者來說,隨著安卓系統(tǒng)的不斷大幅升級迭代,碎片化系統(tǒng)和機型越來越多,開發(fā)的效率和成本代價也日趨增加,繁重的開發(fā)任務(wù)也讓開發(fā)者有苦難言。
而究其原因,主要在于Java的“虛擬機”機制。安卓系統(tǒng)初期為了吸引開發(fā)者,選擇了開發(fā)者使用較多的Java語言,并使用虛擬機來運行應(yīng)用。在虛擬機里,還需要集成翻譯器或者編譯器,來將Java的字節(jié)碼(即中間代碼)解釋成機器聽得懂的機器語言,或者直接編譯成機器直接執(zhí)行的010101的機器碼。這個邊解釋邊執(zhí)行的過程,就是安卓不夠流暢的原因之一。雖然在2014年10月,谷歌推出了Android 5.0版本,將虛擬機從Dalvik替代成ART(Android Run Time),并對Dalvik的純JIT編譯方式做了改進(jìn)。但安卓手機的體驗仍然不如蘋果手機,在使用APP的過程中,用戶總是覺得安卓手機比蘋果手機要慢。
而具體到此次開源的華為方舟編譯器,其一大突破就是不再需要依賴Android的ART虛擬機,有望解決安卓虛擬機存在的性能問題可以說,華為方舟編譯器的開源,對華為手機、開發(fā)者和其他手機廠商來說,都是一次顛覆安卓傳統(tǒng)“惡習(xí)”的革命,也是華為自主技術(shù)和開發(fā)者生態(tài)的再進(jìn)一步。
華為方舟編譯器將為開發(fā)者打造“五星級”開發(fā)環(huán)境
華為方舟編譯器作為中國自主技術(shù)研發(fā)的編譯運行系統(tǒng),從官方宣傳中可以看出其定位的是面向開發(fā)者的支持多語言、支持平臺的編程平臺。也就是說未來應(yīng)用開發(fā)將使用方舟編譯器的相關(guān)部件,包括編譯器、調(diào)試器、調(diào)優(yōu)工具,并且通過支撐多語言、消除跨語言的調(diào)用開銷,幫助開發(fā)者在選擇編程語言時不用再糾結(jié)語言的性能問題。對多平臺的支持,也將幫助開發(fā)在未來的多端設(shè)備開發(fā)上,始終使用同一套編程平臺,不用在不同的開發(fā)平臺間來回切換。這也相當(dāng)于為開發(fā)者打造了一個“五星級”的舒適開發(fā)環(huán)境,不再為傳統(tǒng)的終端程序開發(fā)而“心塞不已”,可以更省心、高效的進(jìn)行各種程序應(yīng)用的開發(fā)、調(diào)試和升級迭代。華為方舟編譯器還直接將編譯器的代碼優(yōu)化搬到了開發(fā)者環(huán)境,不再被手機端的硬件資源所限制,這更是讓數(shù)以萬計的開發(fā)者為代碼優(yōu)化提供了無限可能。
有知乎網(wǎng)友大膽猜測,“華為的野心是,Java、Java、Python、C、C++都要翻譯到Maple IR,并且Maple IR是為了在芯片上運行做優(yōu)化為目的的語言。”
另有專業(yè)網(wǎng)友發(fā)帖稱,“今天把官方給的(方舟編譯器)文檔和源代碼都解讀(翻譯了)一遍,目前讀下來的感覺是:把Java的類、接口、異常處理、都做了,工作量真的挺大的。國人自己搞一個這么硬核的項目,在以前是沒有的。能把Java翻譯到自己設(shè)計的語言上,再執(zhí)行對,太難了,工作量超級大,可以說國內(nèi)做這種級別的東西,可謂是第一次。”
也有人直言,“(方舟編譯器)這種級別的控制復(fù)雜度,和建立抽象的能力,以前貌似是只有老外這么干過”,“就算搞個跟國外進(jìn)化下來的最強開源的,一樣牛逼的,只要是自己一行一行寫起來的,那已經(jīng)很吊了”。
華為的一小步,行業(yè)的一大步,自主技術(shù)創(chuàng)新大生態(tài)時代已然到來
值得一提的是,開發(fā)者使用方舟編譯器,并不需要改變原來的編碼習(xí)慣。開發(fā)者可以自行開發(fā)代碼優(yōu)化算法,也可以僅通過方舟編譯器預(yù)置的算法進(jìn)行代碼優(yōu)化。而未來,華為還將提供代碼調(diào)優(yōu)工具,開發(fā)者可以選擇根據(jù)工具的優(yōu)化建議來調(diào)整代碼,和方舟編譯器配合獲得更優(yōu)的執(zhí)行效果。
不難預(yù)見的是,隨著未來數(shù)以萬計的開發(fā)者使用方舟編譯器,手機用戶的體驗也將在不久之后達(dá)到一個前所未有的高度。而這對于整個終端生態(tài),可以說華為都是做了一件世界前所未有的大事件。
從技術(shù)突破上看,華為方舟編譯器團(tuán)隊是基于多個編程語言的深刻理解和大量研發(fā)積累,將混合語言開創(chuàng)性的實現(xiàn)了統(tǒng)一的中間表示IR,這就相當(dāng)于同一個人能夠理解全世界的語言。而這,可以說更是華為自主技術(shù)創(chuàng)新的又一次革命性突破。
根據(jù)華為在開發(fā)者大會上公布的信息,作為鴻蒙OS的重要工具,方舟編譯器從今年開始,將持續(xù)進(jìn)行開源。譬如,明年計劃開放Java編譯器工具鏈,支持Java程序編譯;后年則計劃開放對Java語言的支持能力,用于JS應(yīng)用的編譯。
值得注意的是,不僅方舟編譯器,就連華為的鴻蒙OS也將陸續(xù)開源。而華為通過這種持續(xù)的開放、開源,正是在將自身十多年來的研發(fā)成果和技術(shù)能力不斷貢獻(xiàn)給行業(yè),同時在開源社區(qū)中,吸引更多的開發(fā)者參與并貢獻(xiàn)自己的力量,藉此共同推進(jìn)中國自主技術(shù)和開源盛世的發(fā)展。
整體來看,對于華為這樣的超級技術(shù)型企業(yè)而言,方舟編譯器的開源可能只是一小步,但是對整個行業(yè)而言,對世界舞臺而言,卻是十足的一大步,是對中國乃至全球開源領(lǐng)域的強勢引領(lǐng)??梢云诖氖?,以華為的實力和眼光、高度,華為勢必還將持續(xù)擁抱開源,更有望繼續(xù)在主流基金會及開源社區(qū)中積極貢獻(xiàn),進(jìn)而為全球億萬開發(fā)者進(jìn)行更深入、更全面的賦能,最終引領(lǐng)一個自主技術(shù)創(chuàng)新大生態(tài)時代的全面到來。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!