華為的方舟編譯器到底有什么用呢?
官方解釋:方舟編譯器可供開發者在開發環境一次性的將高級語言編譯為機器碼,手機安裝應用程序后可全速運行程序,帶來效率上的極大提升。根據華為實驗室的測試數據,EMUI 9.1在僅僅對系統組件System Server應用了華為方舟編譯器后,就帶來了系統操作流暢度提升24%,系統響應性能提升44%。
按照我們開發人員的角度來說,就是一個虛擬機。
方舟編譯器簡單來說,就是可以將高級語言比如Java,直接編譯成變成機器碼的技術。它最大的優勢就在于繞過了安卓系統的VM(虛擬機),從使得應用可以像蘋果引以為傲的iOS系統一樣,轉化出的機器碼可以直接由CPU運算,從而使得運行效率大大提升。
從發布會上所介紹的信息,方舟是靜態編譯,不是基于傳統的java虛擬機進行對代碼的運行時編譯。
所以個人猜想這個可能是理想數據,但是其在此時推出自家的編譯器,不免令人聯想到其在為自家即將發布的操作系統鴻蒙做準備。
總所周知,現在如果要推出一個系統,需要有足夠多的廠商去設備或者說去對其定向開發,同理如果沒有足夠多的應用,即使系統再流暢,也沒有足夠多的用戶去選擇它,所以這是一個基于生態的環境,掌握生態,就是掌握命脈。
第一個疑問肯定是PPT上說的解決邊解釋邊執行和ART有什么區別?上面我說了,ART是在機器層面安裝時才編譯,事實上,安卓8.0引入了熱點編譯的策略,也就是說不把全部字節碼都編譯為機器碼。而如果在編譯器層面上動刀,且變成了直接把中間碼編譯為ARM機器碼打包在apk里。這是兩個完全不同東西。當然,效果如何我說了,這就有待考究了。
第二個疑問,編譯工具的接受度。實話實說,現實中我還真沒見過安卓開發有用arm自己的編譯器的。我沒有任何貶低方舟的意思,但為了一個很可能破壞兼容性的解決方案(模擬器玩家和安卓x86的末日)去放棄官方的方案,并不是一個非常理想的方案,而且退一萬步講,安卓8.0為什么非要將純ART環境改回jit+aot雙環境不是沒理由的。再退一萬步講,現在支持HIAI的軟件又有多少呢?
想上方舟,對不起,你得先了解這些問題:
PS:來自于花粉俱樂部
Q1:能不能通俗易懂(大白話)介紹下編譯器是什么?編譯器是人類和機器建立溝通的橋梁。將人類語言(高級語言)翻譯成機器看的懂的語言。而編譯器的執行效率直接影響手機各種APP的相應速度。
就拿現在你能看懂這篇帖子中的文字,覺得很輕松,不就是個漢字嘛。可是對于計算機來說,它實際上根本就不認識漢字,它只知道1和0這兩個數值,我們用高電壓表示1,低電壓表示0。也就是說計算機世界里面的語言是二進制的,不是1就是0
如果想要計算機做到能夠正確表達你現在寫的文字,那么這時候,編譯器就出現了。編譯器的作用就是將人類語言(高級語言)轉換為計算機可以理解的機器語言
Q2:方舟編譯器和普通編譯器有什么不同?首先你要知道安卓程序是java寫的,java程序是將源碼代碼最終編譯成機器碼的過程。普通編譯器的這個過程是動態的,這也是為什么Android程序沒Iphone程序跑得快的根本原因。傳統的安卓系統編譯,很多程序往往需要一邊編譯,一邊執行。方舟編譯器的不同之處是將動態編譯改進靜態編譯,可以做到全程執行機器碼高效運行程序,大大縮短了程序響應時間。舉個不太恰當的例子,就像是把50集電視劇改編成了1部電影,觀影的時間短了,但是該有的劇情一個都不會少。
Q3:方舟編譯器真的很牛么?首先要肯定的是這個東西真的很牛X,牛X到什么程度呢?使用之后,安卓的體驗幾乎是可以達到IOS的水準,媲美 IOS指日可待。微博 @萬能的大熊 描述的就很形象:大概就是假如現在汽車分柴油發動機和汽油發動機,那么方舟編輯器的意義就是通過了它,發動機可以加汽油也可以加柴油。或者說,它讓發動機不挑油了。
Q4:方舟編譯器是如何做到提高程序響應速度的?當前TOP應用95%都涉及了多種語言的開發,比如C、C++、JAVA等,不同的語言代碼保持獨立,在運行環境進行協同,會產生系統性能的部分損耗。方舟編譯器可以做到將不同語言的代碼放到一套編譯好的執行文件,并高效運行。這種編譯好的文件可以做成安裝包,當你在手機上下載安裝后,就不需要系統在出力氣去編譯了。
Q5:方舟編譯器發布了,為啥我的手機沒感覺比以前快呀?有了方舟編譯器還遠遠不夠,還需要各大APP廠商去做適配,由于方舟編譯器還未開源,APP的適配工作還未正式開始,所以敬請期待吧!
Q6:現在有哪些應用支持方舟編譯器遺憾的告訴你,目前暫時只有微博極速版支持。
Q7:使用方舟編譯器性能到底會提高多少?根據華為實驗室測出的數據,EMUI 9.1中僅僅對系統組件System Server使用方舟編譯器進行優化,就可以帶來24%的系統流暢度提升,系統響應性能提高44%,目前第三方有微博極速版進行了適配,根據華為給出的統計數據,操作流暢度可以提升60% 。在小賤看來,對于我們消費者而言,不用花一分錢,手機性能基本提升了一倍,簡直是又換了一個新手機的節奏!
Q8:方舟編譯器這么牛,難道就沒缺點?有,根據編譯的原理,方舟編譯器在用戶安裝apk安裝包的時候,就已經將編譯工作做完了,這勢必會導致應用安裝包的體積增大,具體增大多少暫無法確定。不過正常情況下,APP安裝完成后,安裝包可以選擇刪除掉,所以最終占用手機空間也不會比原來大多少。而且現在手機內存越來越大,還怕這點安裝包不成?
Q9:方舟編譯器的適配計劃公布了嗎?華為宣布將在2019年8月會在華為終端開發者大會上開源,在2019年11月會在綠盟開發者大會將完整的方舟編譯器代碼開源。
Q10:我的機型是否會支持這個黑科技?不要擔心,如果僅僅想體驗編譯器帶來的APP急速打開的體驗的話,那就和機型、系統沒關系了。方舟編譯器可以針對系統方面(見Q7對系統組件System Server使用方舟編譯器進行優化,就可以帶來24%的系統流暢度提升),也可以針對APP應用層面做優化,手機上安裝了經過方舟編譯器適配后的APP也是可以收獲極致體驗的。
Q11:對于方舟編譯器,你有什么看法?這個問題??對于方舟的看法那必須是好,很好,非常好啊,小賤要用一腔熱血投身于菊廠,為繁榮而貢獻自己的綿薄之力(緊張~~)
咳咳,方舟再牛X后期也離不開各位第三方APP大哥大姐們的辛勤開發適配,在這里先說一聲謝謝!期待著體驗~
Q12:最后,對方舟編譯器第三方APP適配有什么建議嗎?后續經過編譯器編譯過的第三方應用,就可以上架華為應用市場了,這時候大家就可以進行體驗。建議將使用方舟編譯器的APP帶有一些特殊標識,一來可以提高品牌宣傳,二來最重要的是便于用戶分辨選擇。
最后獻上一段科普視頻: