02.29 關於華為方舟編譯器,你怎麼看?

蔣宣陽


大家好,我是‌(放牛大叔)優質​數碼領域創作‌者,對數碼有‌著非常深‌刻的‎瞭解,對手機、相機、筆記本電腦十分了解,目前我在數碼城工作,每天能接觸到各種各類電子產品,讓我用專業的角度為您解答:

安卓系統基本操作。除了華為、蘋果,其他手機廠商基本用安卓系統。簡單點說,就是用JAVA虛擬機編程(高級語言),再用JAVA虛擬機彙編(彙編語言),再編譯成機器懂的二進制(機器語言)。 虛擬機始終繞不開、都是虛擬機進程,而且不同公司虛擬機、程序編寫軟件和習慣不同,必須一行行地彙編、編譯、執行,每部分都有頭有尾,就相當於把名著改變成若干集電視劇。

方舟編譯器的逆天操作。華為這款編譯器將上述彙編、編譯功能合為一體,成為華為統一標準,本質是創新型的安卓應用編譯器。不管是哪家編的程序(高級語言),用華為編譯器,可以統一地彙編、編譯,統一給安卓系統執行(機器語言)。就相當於把名著改成一部電影,只有一個開頭結尾,是一個整體。這麼做有一個前提,就是兼容適用於安卓的所有開發語言、彙編表、編譯表,在此基礎上自己重新彙編、編譯,整合成為華為自己的標準。這個工作量和難度是相當驚人的。


數碼牛牛


謝謝您的問題。華為方舟編譯器,是一次重大創新。

華為方舟編譯器的原理。

三種計算機語言。第一,機器語言,就是0、1二進制代碼。第二,彙編語言,就是通過機器硬件將機器語言編譯成我們能看明白的編譯語言,就相當於翻譯器。第三,高級語言,就是程序員編程,比如JAVA 編程等。

安卓系統基本操作。除了華為、蘋果,其他手機廠商基本用安卓系統。簡單點說,就是用JAVA虛擬機編程(高級語言),再用JAVA虛擬機彙編(彙編語言),再編譯成機器懂的二進制(機器語言)。 虛擬機始終繞不開、都是虛擬機進程,而且不同公司虛擬機、程序編寫軟件和習慣不同,必須一行行地彙編、編譯、執行,每部分都有頭有尾,就相當於把名著改變成若干集電視劇。

方舟編譯器的逆天操作。華為這款編譯器將上述彙編、編譯功能合為一體,成為華為統一標準,本質是創新型的安卓應用編譯器。不管是哪家編的程序(高級語言),用華為編譯器,可以統一地彙編、編譯,統一給安卓系統執行(機器語言)。就相當於把名著改成一部電影,只有一個開頭結尾,是一個整體。這麼做有一個前提,就是兼容適用於安卓的所有開發語言、彙編表、編譯表,在此基礎上自己重新彙編、編譯,整合成為華為自己的標準。這個工作量和難度是相當驚人的。



華為方舟編譯器的功能。

過程很省事。華為方舟編譯器是底層優化,雖然執行效率還需要實踐證明,但是讓操作系統全程執行機器碼,徹底改變了安卓系統“邊解釋邊執行”的效率問題,高效編譯,直接運行,多個來源,一個出口,效率會提升。

性能很優越。餘承東的描述中,華為方舟編譯器能夠將系統操作流暢度提升24%,將系統運行效率提升44%,將各種APP操作流暢度提升60%。


華為方舟編譯器的潛力。

開發共享搭平臺。餘承東面向國產手機廠商宣佈,方舟編譯器要開源,鼓勵APP開發廠商儘量使用方舟編譯器,實際是培養客戶的信任和使用習慣。到了5G時代,一切上雲,APP未必一直存在。

為自己系統鋪路。華為如果今後用自己的系統,各家廠商不需要根據華為的新系統重新開發APP,只需要通過方舟編譯器處理過,就可以很自然地將安卓系統的軟件移植到華為操作系統上,背後是手機生態的移植,這個意義非同尋常。華為的5G佈局也是類似原理,儘量兼容3G、4G組網,減少原有用戶、廠商的建設、使用成本。同時,華為芯片減輕對高通的依賴、方舟編譯器減輕對安卓的依賴。這是華為的技術遠見。
歡迎關注,批評指正。


追科技的風箏


首先不得不說我大華為技術實力的雄厚,能在編譯器級別做架構性的優化,還是需要實力與勇氣並存的。那麼值得我們思考的是,在中國科技企業中,具有實力和勇氣的公司並不只華為,例如阿里也是在業內以技術推動型成長的公司,像它的阿里雲服務也是實力與勇氣的結晶,為何華為會帶頭領先做Java編譯器級別的優化呢?說到這,相信有人可能理解了,不錯,因為華為的手機業務。華為目前是唯一擁有自主知識產權麒麟芯片的公司,也有自主的手機操作系統,而且華為手機目前是國內手機行業的佼佼者,針對自身的硬件特性和系統特性,如何提高操作系統的流暢度或者體驗度,實現定製化的性能調優,都是推動華為技術方向的因素。底層的硬件,到中層的操作系統,華為都有了自主能力,那麼到用戶層之間就差APP的性能優化是華為沒有改變的,如何優化APP性能,那麼從編譯器入手也就變得順利成章。說到編譯原理,可能很多非計算機專業夥伴很難理解。在這裡我儘量通過一個通俗的例子稍作解釋。例如以我們喜聞樂見的吃舉例,我們依照食譜做一道菜,那麼做為成品的菜就可以理解為一個APP,食譜裡的步驟就可以理解為編譯器為我麼生成app的執行流程,這套流程的好壞或者是否合理,就決定了菜的好吃程度。同樣的菜,如果我們把做菜的步驟調整優化,那麼菜的口感也就會發生變化。那麼如何去調整優化app的執行流程了,這就是編譯器才能做的事了。那麼如果能從編譯器級別解決安卓性能問題,那麼帶來的市場將是不可估量的。安卓一直被iOS碾壓的就是性能問題,如果真的能解決性能問題,對於華為自身以及華為在國際中軟件及硬件市場的地位提升是不言而喻的。所以華為第一時間開源了編譯器,那麼必將會引入大量的開發愛好者和APP軟件開發者,如果編譯器針對麒麟芯片有更深層的優化,那麼也必將推動麒麟芯片在安卓市場中的硬件地位。所有綜合考慮,華為從硬件到系統再到編譯器的佈局,使其在移動業務上實現了閉環,通過打通軟硬件之間的隔閡,相輔相成的發展,再加上自身5G技術的加持,華為未來的市場是不可估量的。僅代表個人觀點,有錯誤之處,還望指正。


我樂自我高


把ART,方舟編譯器和LLVM的拉在一起比一比,順便駁一駁把ART(Android Runtime) 捧上神壇的觀點!

下面這個觀點很有市場,6年前的ART已經是機器碼了,方舟編譯器似乎是新瓶裝ART舊酒啊!

ART往往只能靜態編譯不到20%的機器碼

因為Java的動態語義完全啃不動,只能原封不動放在一邊,等運行的時侯邊解釋邊運行。

Java 語言定義的語義可以粗略分為靜態和動態兩部分,動態語義部分是在靜態時無法確定的。ART和方舟編譯器的兩個編譯器兩者根本的區別在於AOT無法編譯 Java的動態語義部分,比如反射。換句話說,ART僅能編譯靜態部分。由於Java語言獨特的虛擬機機制(簡稱JVM),在運行時,首先在手機上打開虛擬機,然後將應用程序的Java字節碼即時編譯為機器碼,邊翻譯邊執行,執行效率與iOS有了差距。

ART 並非在應用一安裝完成的時候就一次把AOT做完,需要應用跑過幾次之後才有充足的數據來進行 Profile-guided 的編譯工作。並且有些 OEM 會配置 ART 的 daemon 使得設備必須在充電的狀態下才能執行 dex2oat 工具編譯應用。

ART在Android的實踐一直差強人意

Android 5.0 ~ 6.0 ,Google 推出了 ART 來解決之前的 Java 代碼執行效率問題。這個階段採用的是完全 AOT 模式;Android 應用在安裝的時候,系統會把所有Java靜態語義(動態語義搞不定)提前編譯為機器碼。這種模式有兩個缺點完全不能忍:

首先,安裝速度極為慢。哪怕當前的 855 採用 AOT 模式編譯較大的應用(如支付寶)可能就要一分鐘。更別說當年蝸牛般的 CPU ,安裝一個應用都讓你等得頭皮發麻。更要命的時候,系統開機時會對所有的應用執行 AOT 操作,這時候你的開機速度可能要半個小時……

另外,就是佔用ROM空間,Java 代碼編譯為機器碼之後體積會急劇膨脹。就拿微博極速版來說9.5M,安裝後直接幹到37.5M,臃腫了300%,用有限的手機資源去優化指令,難免不徹底,消費者也沒有耐心等你優化啊!

方舟編譯器更像LLVM

EMUI9.1對安卓底層動刀背後,是華為與蘋果下半場之爭

圖標

方舟編譯器似乎能"100%靜態編譯動態語義"(從沒人做到過)。也就是,甭管你什麼語義,我都給你100%的靜態化,將Java虛擬機徹底解構,這別說Art 、 Dalvik 等做不到的,縱觀整個ICT行業還沒人做到過。當然,原理效果有待驗證。

對比ATR在手機安裝的時候編譯,方舟編譯器在應用開發階段就在服務器上編譯(含徹底地優化指令)完成,在應用市場上架。節省了寶貴的手機資源,這一點就和LLVM完全一致了。

這裡澄清一個概念:虛擬機其實是個好東西,在服務器或雲端,大把的CPU,RAM,呼呼的風扇,跑起虛擬機來沒一點負擔。但手機端側,CPU,RAM的資源非常有限,“邊解釋邊執行”往往帶來大量的隨機卡頓。

最後,順便說一下iOS的LLVM,LLVM在編程階段就沒有JVM(虛擬機機制),從一開始就是衝著100%靜態化去的,雖然Swift掌握起來不如Java語言容易,但在運行機制上講確實是個先天優勢。


heyD優視


個人覺得,這個編譯器很難迅速的普及,雖然我們覺得能夠提高運行速度,那是非常好的事情,但是統一標準是一件非常難的事情。讓要全世界業界都用華為的方舟編譯器,華為還沒有這麼大的影響力,特別是在西方抵制華為的封鎖的情況下,如果是局部用,畢竟它不是官方的兼容性很難得到保證。畢竟谷歌才是安卓之父,這事如果讓谷歌來做,就會容易得多,華為在別人的地盤做事,必定要受到他人的限制。安卓系統最重要的不是它的運行效率,快很慢。以現今現在的硬件速度,即使是邊解釋邊執行也沒有問題。最主要的是它的生態系統的強大。這也導致很難再有一個第三方的手機操作系統能夠普及。總之華為要做大做強,只能自己開發手機系統。不再受制於人,這才是終極解決方案。到那時我們才能說谷歌算個屁。


晨星144527486


關於華為方舟編譯器,你怎麼看?沒想到P30發佈會上竟然有這麼一個黑科技誕生,以前沒有一點兒消息透露出來,看來華為是保密到家。華為方舟編譯器的出現,可能是華為為了自己的終端建設生態環境而布的局,也許華為的底層更為優化的系統或者甚至是自己系統的推出可能真的不遠了。

華為不但自己可以從底層優化操作系統,使得系統更為流暢。而且給APP開發商也開放開源,個人認為這會贏得開發商的積極支持。開發商巴不得自己開發的APP能夠快速響應流暢運行,沒有卡頓,從而可以贏得更多的用戶或客戶,是開發商願意使用的。只要有人使用這個工具開發出軟件,那麼在華為手機系統上的運行優勢就更能體現,可能會為華為帶來更多的終端用戶。

餘承東發佈會上號稱方舟編譯器實現了架構級的優化,能夠讓操作系統流暢度提升24%、系統響應提升44%、第三方應用操作流暢度提升60%。是全程執行機器碼,解決安卓“邊解釋邊執行”而造成的低效率。

按照這樣的提升速度,如果把這些應用到華為自己的操作系統上,是否速度及流暢度的問題就解決了呢。是不是會對蘋果形成較大的壓力呢?以前看重蘋果手機iOS系統的用戶是否會有轉向到華為的念頭呢?即使是自己開發操作系統,也極有可能並不會輸於iOS。


也許方舟編譯器只是個開頭,接下來華為幾年之內說不定還有更大的動作出現。


更多分享請關注【東方高揚】。


東風高揚


我知道這種編譯器有人說跟Lollipop和M的ART一樣開歷史倒車,但是我感覺不是一個概念,華為有兩把刷子啊,有方舟編譯器,開發者對華為粘性增大,增強開發效率,谷歌把華為踢出安卓華為也能應對,這佈局套路真的強,有華為Google算個P

以上結論均為個人分析,至於具體的方舟編譯器實現流程還要等11月份開源才知道,至於GPU Turbo那也可能就是那,不開源只能猜測。也就是猜的像不像問題


雲谷小影


為了更客觀地回答這個問題,我特意去找方舟的源代碼,試圖更好了解其內部原理。可惜找到的全是發佈會,新聞,以及如何如何顛覆云云。滿滿的中國風,實在是有點失望!或許是 現在受到太多關注,光芒太多,原本對他們來說只是一個將自己的一個優化工具開放給開發者使用,卻被寄於太多期望或者過分吹噓。當然華為的這種開放在較大的格局下對 的戰略應該是更有利的。

但是媒體似乎更願意放大“華為做編譯器”的新聞,因為這關乎到所有開發者,是軟件生態的次級戰場,而且是不亞於系統的戰場!因為它直接影響開發者的創造能力,直接影響軟件生態圈。華為目前的生態依舊是基於安卓,可以說還是背靠美國的Google,發展越強,其實背後越有價值的還是谷歌!

在操作系統層面,大家基於Linux做都可以相安無事,因為Linux足夠開放自由。但是Android不同,他的開放是被谷歌牽著走的,越開放,越有利於建設生態系統,最終安卓也會越有價值。也正是這種開放生態系統,原來在神壇之顛的封閉商業系統現在基本已經消亡(比如諾記的那個,但iOS和macOS並不屬於完全封閉商業,蘋果體系下有很多對開源友好的生態入口)。而在操作系統層面一般廠商也很難有可圖了,需要更大的局,更多的資源,更長遠的打算,更強大的商業意志,才有可能去深入操作系統的研發。華為是有這樣資本和意志研發操作系統的極少數大廠。

但華為的手機業務目前極度依賴安卓,哪怕他再想要,也很難下決定自己做操作系統。因為背後更重要的是軟件生態系統,這才是最強大的商業護城河,有了這個生態系統,操作系統才能活!當時蘋果建立在iOS之上的AppStore似乎無法撼動,其強大成就了蘋果的偉大。要複製蘋果的生態,走他的路幾乎是找死,且不說能否達到他的行業水準。但是要再做一個軟件生態系統,走一條岔路,那是有可能的!這也是為什麼當時蘋果電腦都那麼優秀了,還是被微軟搶佔了PC市場,以至於喬布斯當時破口大罵微軟比爾蓋茨;iOS和AppStore都那麼優秀了,還是被谷歌的Android搶佔了巨大的移動市場,以至於當時喬布斯見到Android破口大罵谷歌。

蘋果電腦的封閉授權,給其他硬件廠商帶來痛點,給微軟帶來機會;蘋果手機的封閉,給谷歌和Android帶來機會。商業上要與強大的對手幹,就要走不一樣的路。你封閉,我就選擇開放!微軟將開放的殷勤獻給了當時PC硬件廠商(蘋果是自己做操作系統和電腦硬件的,幾乎不給其他人機會),成就了PC硬件廠家和微軟自己,才有了現在的PC加Windows這個“事實上的標準”“電腦”(de facto standard)。谷歌擁抱開源,將開放的姿態發揮得更高級,向全世界開發者和手機廠商獻媚,誠意十足地獻出Android,成就瞭如今的安卓系統。才有了後來中國山寨機的崛起,諾基亞手機的隕落,以及後來我們熟悉的各大手機廠商。可以說,谷歌的開放,是在聯合全球的手機硬件廠商和開發者跟蘋果對著幹。源碼的開放同時迎合了硬件廠商和諸多開發者,擁抱了開源社區。

安卓的生態經過這麼多年的廝殺,已經進入我們生活的方方面面。華為手機業務背靠安卓,若想要再造一個系統,無異於將自己放於一個看不到盡頭的深淵。在這裡,你不能用他們走過的路自己重走一邊,然後報“顛覆”的幻想,這是極度危險和痛苦的。好在華為手機似乎看到這點,所以依舊擁抱在安卓生態圈,在裡面的一環發力。(這點也與當時聯想做安卓手機不同,聯想當時做安卓,拿來谷歌等源碼就想另起爐灶,與谷歌直接對著幹,結局大家已知)

回到主題,在軟件生態系統裡面,除了操作系統,剩下最有力量的武器恐怕就“編譯器”了,或者稱為“開發工具”,不幸的是開發工具也是一個進入門檻極高,甚至可能吃力不討好的領域。但是一旦做起來,其威力不亞於谷歌的安卓,微團的視窗。因為他讓廠商有機會截胡,籠絡開發者,從而影響生態圈的源動力,甚至可能讓一個系統原廠邊緣化(當然現實中這是幾乎不可能的,因為系統原廠也在推動原生的開發工具,而非一成不變)。

所以先不論華為方舟是一個怎樣的編譯器,是LLBM那個量級的,還是簡單的針對Java字節碼的靜態優化工具,結果恐怕還很難說。但是可以想象的是,華為一直在尋找最佳的突破口,而這次編譯器,我覺得是一個很好的突破,但是不要輕易談“顛覆”,我想這些語言應該出自媒體而非華為之口。

那華為如果只是優化應用的運行時(並非LLVM那個量級的編譯器),拋開谷歌的運行時和虛擬機(如ART,Android Runtime),會發生什麼呢?當然靜態編譯可以得到很大的性能優化,但是其缺點也顯而易見:極大的加大了應用程序的體積,應用轉為依賴華為的底層庫。

當然這兩個痛點在華為手機上根本不是問題,因為自家手機,配上自家優化工具,這兩點可以避免。但是要移到其他手機呢?恐怕會成為開發者維護的噩夢!因此對於整個安卓生態來說,難說有重大“顛覆”。還是得和安卓一起走。

但對華為來說,開放這種工具對成就未來的自己是有諸多好處多,一方面這類工具讓開發者的應用可以對自家手機表現得更加優秀。另一方面,如果開發者的應用如果被安裝到其他手機,哪怕有問題也可以讓用戶感覺到華為手機“更好”,因為這個應用在華為手機上跑得更快,在你的XX手機上慢如蝸牛!

簡單地說,華為開放這個優化工具(編譯器)給開發者,可以更好的將開發者和用戶綁定到自家手機上,隨著時間的推移,讓更多的應用在自家產品產生差異因素,讓華為(和方舟編譯器)進入人心。

至於對未來生個生態的影響,恐怕難說的很,尤其是在編譯器這個領域。方舟到底是個系統級的編譯器,還是個優化工具?這個問題留下來給讀者你。


勿與君子鬥名


卵用沒有。。。java源碼不可能能直接編譯成可執行文件。


taleair


朝自主生態進發。


分享到:


相關文章: