方舟編譯器特別版是華為公司首個完全自主研發的編譯器平臺,隨著鴻蒙2.0系統的推出,方舟編譯器2.0版本也一起發布了。這款軟件能夠支持多語言和多設備的編譯,我們可以通過這款軟件來解決安卓程序“邊解釋邊執行”的低效率問題,方便你更好開發安卓程序。
方舟編譯器2.0統一了多語言前端,可選Java、JS或者其他語言,還統一了運行時,消除了跨語言交互開銷。
此外,方舟編譯器2.0還統一了分發格式,提供OS、開發框架和運行時協同涉及,聯合優化,提高了代碼執行效率
在華為的鴻蒙生態鏈中,方舟編譯器2.0也是重要的一環,它會跟華為的鴻蒙OS應用框架、13000多個API、一體式開發工具DevEco及分布式應用一道成為鴻蒙平臺的重要組成。
多語言聯合
將同一應用中的不同語言代碼聯合編譯、聯合優化,消除語言間的性能“鴻溝”,降低開發者的優化成本
輕量運行時
通過編譯器的語言實現能力和優化能力增強,應用運行時的開銷更小
軟硬件協同
編譯器與芯片實現軟硬件協同優化,充分發揮硬件能效,應用體驗更佳
多平臺支持
支持面向多樣化的終端設備平臺進行編譯和運行,根據設備特征提供便捷的開發與部署策略,提高開發效率
一、開發階段打包的APK就直接是可執行,并且跨語言平臺
在方舟編譯器里面,已經編譯好的APK,會通過靜態編譯的方式先轉換成機器碼再安裝,這其實是AOT,無需麻煩的虛擬機,提升運行速度和效率。并且作為開發者,還可以根據不同的程序特點,選擇不同的編譯優化方案,不像安卓官方的方式使用統一的虛擬機方案。
二、方舟編譯器邊運行變清理,內存清爽
現在安卓手機的一大特色就是內存越來越大,6GB都是老人機的配置了。這除了程序大以外還有安卓的程序運行產生垃圾多有關系。那么清理垃圾呢?則需要暫停程序,也就會頓一下,即所謂的“卡”。華為方舟編譯器則是利用程序多線程運行的特點。打個比方,您現在正在用的“中關村在線”這個APP用了AB兩個線程,在華為的P30手機中,那么線程A運行的時候,B在清理垃圾,然后A線程清理垃圾的時候B線程在運行,程序運行不中斷,垃圾處理不停,做到了又連貫、又節約系統資源。
三、方舟編譯器,應用級編譯優化
代碼優化是編譯器最為核心的功能,也是評判一個編譯器優劣最重要的標準。
當前由于安卓應用使用了虛擬機機制,難以面向不同應用對虛擬機進行針對性的靈活優化。
安卓ART的AoT和JIT動態編譯因為是運行在手機上,受資源所限,因而只能使用簡單的優化算法。
而方舟編譯器由于是在應用開發階段進行編譯,所以可以允許不同應用靈活采用不同的編譯優化方案,而且因為在開發環境編譯不會受到手機性能的限制,可以使用更多先進的優化算法,從而使得每個應用的性能達到最佳。
1、方舟編譯器是可以對安卓底層有優化作用的,像這樣的優化是鑲嵌在系統中的,能將所有的Java代碼都編譯成機器碼,從而是程序運行的速度更快換句話說就是方舟編譯器并不是一個單獨的app,當軟件運行時,其就在運行。
2、方舟編譯器提供了更高效的內存回收機制,回收時無需暫停應用,隨時用隨時回收,大大提高運行速度。舉一個例子:EMUI 9.1僅僅對系統組件System Server應用了華為方舟編譯器后,就帶來了系統操作流暢度提升24%,系統響應性能提升44%的收益。
3、代碼優化是編譯器最為核心的功能,也是評判一個編譯器優劣最重要的標準。
4、方舟編譯器由于是在應用開發階段進行編譯,所以可以允許不同應用靈活采用不同的編譯優化方案,而且因為在開發環境編譯不會受到手機性能的限制,可以使用更多先進的優化算法,從而使得每個應用的性能達到最佳。
Q1:方舟編譯器是一次性全部代碼嗎?
答:首次開源范圍是編譯器 IR( Intermediate Representation)、RC(Reference Counting)和多語言設計思想等,用于與業界、學術界溝通交流。接下來將陸續開源編譯器前端、后端,支持其它語言(如 JavaScript)的編譯等,當前部分Java語言特性和JVM虛擬機特性的支持未包括在本次開源代碼中,包括:annotation、lambda表達式、泛型等。目前仍有很多地方不完善,會在社區陸續迭代,遇到問題請在社區提交 issue,歡迎在社區繼續討論設計和代碼共建。。
Q2:通過哪些渠道可以獲取方舟編譯器的框架源碼?
答:孵化期間,開發者可以通過如下代碼托管網址獲得相關代碼和文檔,供參考學習、了解方舟編譯器的架構和代碼。
華為云托管地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler。
開源中國碼云托管地址:https://gitee.com/harmonyos/OpenArkCompiler
Q3:方舟編譯器開源路標是怎樣的?
答:方舟編譯器從 2019 年 8 月開始開源,歡迎廣大的應用開發者、手機廠商、軟件從業人員一起共建開源社區和生態。 開源計劃大體上這樣安排:2019 年 8 月重點開源框架部分,接下來將陸續開源編譯器前端、后端;支持 Java 程序編譯、JavaScript 語言應用的編譯等。
Q4:方舟編譯器開源使用的是什么License?
答:方舟編譯器采用木蘭 License。 木蘭 License 由業界眾多專家和公司集體共建,并非華為主導。木蘭 License 具體的好處,詳見專業點評:
開源中國:https://www.oschina.net/news/108840/mulanpsl-the-1st-opensource-license-of-china
開源社:https://mp.weixin.qq.com/s/1xqxxiNKhcgw4RRspAaW2A
InfoQ:https://www.infoq.cn/article/KrZAbAcJrxCU27vKj*JE
Q5: 如何確認下載包來源可靠?md5校驗碼是多少?
答:OpenArkCompiler-0.2-ubuntu-16.04-x86_64.tar.gz 包的 MD5碼是: e7dc8b8c242f2d26429e2ad71dae3112
OpenArkCompiler-0.2.tar.gz 包的MD5碼是:1bf859a67c8b9a2d4080bdaf25ef6181