8月31日,華為方舟編譯器開源官網(wǎng)正式上線,并首次開放了框架源碼。
本次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中間表示(IR)和語言編譯實(shí)現(xiàn),同時搭配編譯器其他二進(jìn)制組件,實(shí)現(xiàn)Java程序到aarch64匯編指令的編譯過程。開發(fā)者可基于開源代碼+二進(jìn)制,編譯構(gòu)建出編譯器工具鏈,嘗試對Java程序進(jìn)行編譯。當(dāng)前,方舟編譯器支持Java/Kotlin程序字節(jié)碼的前端輸入,其它編程語言的支持(如C/C++/JS等)還在規(guī)劃中。
此次公布方舟編譯器框架源碼后,華為預(yù)計(jì)將于2020年及以后實(shí)現(xiàn)方舟編譯器工具鏈完整開源。
根據(jù)官網(wǎng)資料顯示,方舟編譯器已與45多款應(yīng)用合作,包括淘寶、天貓、支付寶、優(yōu)酷、愛奇藝、美團(tuán)、今日頭條、微博、新浪、網(wǎng)易、騰訊新聞等主流應(yīng)用,BAT三家旗下應(yīng)用均有合作,不過微信不在其中。華為稱將對各類流行應(yīng)用進(jìn)行編譯優(yōu)化,并在未來不久上線。
據(jù)華為CBG軟件部總裁王成錄介紹,華為2009年就開始為編譯器做準(zhǔn)備,2013年有了自己的編譯器HCC,2014年引入了Fred Chow等技術(shù)大牛,來做華為編譯器的主架構(gòu)。此后,2012年實(shí)驗(yàn)室成立了編譯器與編程語言實(shí)驗(yàn)室,今年4月推出了方舟編譯器。
編譯器是一種語言(通常為高級語言)翻譯為另一種語言(通常為低級語言)的程序,可以將源代碼翻譯成可以被計(jì)算機(jī)或虛擬機(jī)執(zhí)行的代碼。華為方舟編譯器可供開發(fā)者,在開發(fā)環(huán)境一次性將高級語言編譯為機(jī)器碼,可以讓手機(jī)安裝的APP運(yùn)行效率明顯提升。
相比于安卓原生系統(tǒng),方舟編譯器可以明顯提升系統(tǒng)運(yùn)行效率。首先,它是多語言聯(lián)合優(yōu)化編譯器,消除跨語言調(diào)用開銷,這是影響Android性能消耗較大的核心原因之一。其次,把虛擬機(jī)去掉了,內(nèi)存回收機(jī)制。虛擬機(jī)可以幫助安卓系統(tǒng)適配各種處理器,實(shí)現(xiàn)跨平臺操作,但也會占用額外的系統(tǒng)資源。
華為宣稱,方舟編譯器可將安卓應(yīng)用流暢度最高提升60%。據(jù)華為實(shí)驗(yàn)室測試數(shù)據(jù),EMUI 9.1在僅僅對系統(tǒng)組件System Server應(yīng)用了華為方舟編譯器后,系統(tǒng)操作流暢度提升24%,系統(tǒng)響應(yīng)性能提升44%。新浪微博極速版是第一款采用方舟編譯器的第三方應(yīng)用,操作流暢度提升60%。
談及華為之所以要做方舟編譯器,王成錄解釋:“由于安卓的開放性,對上層應(yīng)用沒有強(qiáng)制規(guī)則。比如安卓的第三方應(yīng)用市場非常多,數(shù)量無法統(tǒng)計(jì);安卓的安裝方式也非常多,通過郵件都可以安裝,由此帶來的問題比較多。所以安卓用戶要真正能夠獲得好的體驗(yàn),手機(jī)廠家只把手機(jī)(硬件)做好是不夠的,(還需要對軟件進(jìn)行提升)。”
值得一提的是,華為在國內(nèi)EMUI在歷代版本的更新當(dāng)中,除了Linux的安卓內(nèi)核外,已逐步把安卓系統(tǒng)的很多部分替代了。方舟編譯器也是其中關(guān)鍵步驟之一,取代了安卓原生系統(tǒng)虛擬機(jī)的位置。
華為此舉,可以認(rèn)為是將安卓系統(tǒng)過渡到自研系統(tǒng)的鋪墊。在華為最新發(fā)布的EMUI 10當(dāng)中,已經(jīng)具備了很多與鴻蒙相似的優(yōu)點(diǎn),包括硬件能力互助共享、一次開發(fā)多端部署等等。如果未來進(jìn)一步把Linux內(nèi)核替代為鴻蒙內(nèi)核,在國內(nèi)市場實(shí)現(xiàn)平穩(wěn)遷移并非不可能。(李振梁)