運行方舟編譯器編譯出來的APP,手機上必須預置方舟編譯器嗎?其他手機運行會變快嗎?

caiyi74362036


根據華為官方介紹,通過方舟編譯器編譯優化過之後,系統流暢度會提升24%,系統響應速度會提升44%,第三方應用(比如:微博)的操作流暢度會提升60%。換句話說,方舟編譯器通過底層優化將安卓應用的各方面性能整體提升了一個檔次。

對於普通用戶而言,我們的安卓手機可以隨時安裝經過方舟編譯器優化過的APP,同時不需要安裝方舟編譯器。

<strong>什麼是方舟編譯器?

關於方舟編譯器,大家如果沒有學習過編程,可能就不太瞭解了。那麼什麼是編譯器呢?

運行在安卓手機上的APP都是使用Java語言編寫的,但是像Java這種高級編程語言,機器是不認識的;所以,需要通過Android內置的Java虛擬機翻譯成機器語言,這樣機器就可以完美運行應用了。而編譯器就是這樣一個類似於“翻譯官”的角色,負責將Java代碼翻譯成機器代碼。

安卓Java虛擬機的編譯過程是動態的,程序的運行往往是一邊編譯一邊執行;所有這些過程對於系統資源的耗費非常大,所以我們可以看到安卓手機的運行內存這幾年增長非常快。

而方舟編譯器則改變了Java虛擬機的編譯方式,將動態編譯變為靜態編譯,可以做到全程只執行機器碼直接運行程序,不經過Java虛擬機,這樣就大大縮短了程序的響應時間,同時還減少了編譯運行過程對於系統資源的耗費。


方舟編譯器對於Android另一項巨大提升的方面就在於垃圾處理機制(GC)的不同。方舟編譯器首次將Java/C/C++等混合代碼一次編譯成機器碼直接在手機上運行,徹底告別Java的JNI額外開銷,也徹底告別了虛擬機GC內存回收帶來的應用進程掉線,使操作流暢度大幅提升。如果說目前最新的安卓系統是和諧號動車,那麼經方舟編譯的安卓系統便是高鐵,是“復興號”。

方舟編譯器的優勢

由於方舟編譯器是從底層優化了Android,所以經過方舟編譯器優化之後的系統和應用程序相比於Java虛擬機,在性能方面都會有巨大的提升,具體來說,有以下幾個方面:


  • 大大簡化了Java虛擬機編譯執行代碼的步驟, 徹底告別了額外的JNI開銷

  • 方舟編譯器改變了Java虛擬的垃圾回收機制,替換了Android system-server的所有後臺服務,大幅度提升系統的性能

  • 方舟編譯器還可以完美編譯除Java之外的其他語言,適用性更加廣泛


總的來說,方舟編譯器對於Android最直接的優化就在於它能夠完全脫離Java虛擬機,從而天生就沒有Java虛擬機所具有的那些缺陷。


贈人點贊,手留餘香。我是小強Talk,歡迎大家關注我,和我一起共同成長進步!


小強Talk


採用華為方舟編譯器編譯之後的APP,據說運行流暢度可以媲美IOS,改善了安卓系統內存回收機制,徹底告別了“卡頓”。

用戶手機不需要安裝方舟編譯器,只需要軟件編寫者將APP源代碼通過方舟編譯器編譯形成APK文件就行。那這個方舟編譯器到底是什麼黑科技呢,下文具體說一說。

方舟編譯器

先說一說什麼是編譯器,學過編程的人都知道,APP是通過高級語言比如JAVA編寫的,需要轉換成機器能夠認識的語言,而編譯器就擔任了這個角色,將高級編程語言寫的源代碼翻譯成機器認識的二進制代碼。

安卓手機採用了JAVA虛擬機的形式,所有的APP需要在虛擬機上邊解釋,邊運行,所以系統資源佔用比較大,因此對於安卓手機來說,運行內存越大越好,目前8G的運行內存已經成為主流。

華為的方舟編譯器,程序員完成APP源代碼編寫之後,經過方舟編譯器編譯,直接編譯為在安卓系統可以運行的代碼,實現靜態編譯,不需要JAVA虛擬機,同時改進了內存回收機制,隨時回收內存,惡如不是將垃圾堆在一起回收。採用華為的方舟編譯器,有可能告別安卓手機大內存的時代。

方舟編譯器的優勢

相比目前普遍在JAVA虛擬機上運行APP,經過華為方舟編譯器編譯的應用有以下優勢:

1、應用程序直接實現靜態編譯,不需要運行在JAVA虛擬機上。

2、優化了內存回收機制,隨時回收內存,而不是像JAVA虛擬機一樣累積之後回收。

3、方舟編譯器將開源,根據華為官方公佈的日程,將於2019年11月,實現方舟編譯器的開源,促進方舟編譯器更好的發展。

總之,方舟編譯器剛剛推出不久,是否能夠得到大規模的推廣和普及,現在還很難說,畢竟應用開發商和手機廠商有自己的考慮。

如果覺得對你有幫助,可以多多點贊哦,也可以隨手點個關注哦,謝謝。



遊戲人超超


目前有很多人對方舟編譯器的理解上還存在誤區,認為編譯是運行了手機上的。主要是長久以來“方舟編譯器能大幅提升系統及App運行速度”這樣類似消息很容易讓非技術領域的人們產生誤解,從字面意思看起來好像方舟編譯器是用在手機上的,因此,很多人都期待華為什麼時候發佈帶有方舟編譯器的手機。

方舟編譯器不是給手機用的!!

用戶不能在手機上使用方舟編譯器,該編譯器是軟件開發者用來編譯軟件用的,可供開發者在將高級語言編譯為機器碼,而手機能不能運行此類App,需要看硬件是否支持,而不是看是否預置了編譯器。


為什麼通過方舟編譯器編譯的App運行速度會得到很大提升?

編譯器的作用就是把高級語言編譯成能直接機器或虛擬機執行的目標代碼。


首先來看看為什麼Android很慢,Android的App都是基於Java開發的,而且編輯後機器 不能直接“看懂”,機器能執行的都是0,1這樣的二進制機器碼,所以需要一個“翻譯員”來把Java語言翻譯成機器能“看懂”的語言,而這個“翻譯員”就是Java虛擬機,因為走了一條彎路,再加上Java虛擬機本身也要佔用系統資源,所以Android的運行效率相比而言較低。


而通過方舟編譯器編譯後的App,指令是機器能直接“看懂”的,中間不需要虛擬機來“翻譯”,所以運行速度有顯著提升,理論上跟IOS相當。

簡單的說,就是A只會中文,B只會英語,B要聽懂A的話中間就需要一個翻譯,這樣傳達消息的效率就很低,現在A報了個補習班把英語學會了,就可以直接用英語和B對話了,這樣中間就省了一個環節,效率也就明顯提升了。


所以,不要錯誤地把方舟編譯器理解成手機系統層面的工具。


至於方舟編譯器編譯出來的App在其他手機運行快不快的問題,答案是肯定的,但前提條件是手機硬件和系統支不支持運行此類App。


負1樓


方舟編譯器的原理我就不說了,很多人有介紹:主要是把原來ART動態編譯通過方舟編譯器預先讓開發者在電腦上編譯成機器碼,減少手機端的開銷。缺點是會增大軟件儲存空間。華為宣稱,方舟編譯器可讓系統操作流暢度提升24%,系統響應速度提升44%,第三方應用重新編譯後流暢度可提升60%。

第一張圖是華為2019開發者大會上已經報備會支持方舟的軟件廠商。第二張是V20升級EMUI10 的更新明細,上面有寫到EMUI10方舟編譯器已經新增35款軟件主流應用。現在方舟已經開源,除華為手機外要想在手機上使用方舟編譯過的軟件肯定得在手機上裝上方舟編譯器兼容邏輯層,不然系統如何知道是用ART運行軟件還是直接內核CPU就可以執行的機器碼?

2019年8月31日,華為正式將方舟編譯器開源,針對前端、後端持續進行開源,預計2020年對Java編譯器工具鏈開源,支持Java程序編譯。2021年對JavaScript編譯器工具鏈開源,可用於JS程序的編譯。





煮酒論乾坤


不知道大家是否還記得華為P30系列的發佈會,在發佈華為P30的時候,華為還為我們帶來了一個“小彩蛋”,那就是正式向大家展示了“方舟”的編譯器,也許很多熱對方舟編譯器還不太清楚,現在就簡單的介紹一下。

概念

眾所周知,安卓的程序大多都是Java語言編寫的,小部分是C語言編寫的,其中中間層則把Java直接翻譯成了彙編語言,而在安卓5.0以前,安卓手機出現了卡慢頓的毛病,這主要是因為當時安卓使用的是中間層+JIT的模式。



不過到了安卓7.0以後,谷歌也開始意識到了更多的問題,所以就開始將中間層、JIT以及AOT共同的連接在一起,在這一模式之下,安卓的運行速度得到了進一步的提升和升級。那麼華為方舟到底優化了什麼呢?



如果說谷歌對安卓的優化是屬於大雜燴類型的,那麼華為的方舟編譯器則直接進入到安卓的靈魂深處,從手機CPU可以理解的二進制代碼入手,以此來提升效率,而作為開發者,還可以根據不同的程序特點,進行相應的優化。



此外,華為方舟編譯器還利用了程序多線程運行的特點,將程序進行了一個全新的升級,做到了連貫的同時,還能夠節約系統的資源,以此來帶給用戶更好的體驗。所以毫不誇張的說。泛舟編譯器之下,安卓程序的安裝速度的確更快了,並且讓手機更加的省電,節能。


互聯網前沿消費


目前方舟只適配麒麟芯片,經方舟編譯的APP目前只支持華為手機,而且只支持經底層優化跳過安卓虛擬機的EMUI。但方舟是開源的,所有的手機廠家都可以基於方舟適配自己的手機芯片。

但這有個問題,安卓的兼容性變差了,碎片化更加嚴重,因為即使都是高通芯片,小米OV適配的編譯器也許都不一樣,那麼以後就會出現小米OV不同版本的微信,嚴重割裂安卓市場。解決方法只有統一方舟編譯器,適配所有手機芯片。之所以谷歌不幹掉虛擬機,也是因為直接編譯對作為一個整體的安卓一點好處沒有,只是對華為三星這些大廠商有好處。


心帆遠影


感謝您的閱讀!

國產手機其他系統如果使用方舟編譯器,會不會有一種認輸的感覺呢?!

你肯定和我一樣,對於華為方舟編譯器的原理還是一知半解。甚至於,我們會有這樣的疑惑?到底方舟編譯器能不能運用在所有安卓手機上,比如MIUI系統,或者Flyme系統,是不是也能使用方舟編譯器呢?

餘承東直接在微博上,發佈了一分鐘瞭解方舟編譯器視頻,在裡面這樣解釋了方舟編譯器:

編譯器:將一種語言(高級語言)編譯成可執行的機器碼!

方舟編譯器:將在APK打包中,直接講java代碼編譯成機器碼,這樣手機安裝後,可以直接執行!


你是否已經發現:目前的安卓手機,在安裝運行APK後,它還需要經歷了將軟件經過解釋器進行解釋,並且透過JIT逐級編譯執行!而如今的方舟編譯器,卻可以直接在程序開發階段,直接靜態編譯,讓我們的APK直接打包後,就能執行了!所以,能夠讓華為的EMUI9.1更為流暢!

現在我們瞭解兩個問題:

  • 國產手機系統會經過方舟編譯器編譯嗎?雖然EMUI9.1對系統服務組件進行了編譯,系統流暢度和響應速度提升。但是,國產的手機系統,是不會使用華為方舟編譯器來進行系統編譯,如果使用了方舟進行系統編譯,這似乎間接的說明了自己的系統不如華為系統。
  • App編譯,APP是第三方通過方舟編譯器編譯,這需要等開源,我覺得軟件廠商可能會使用方舟編譯器編譯。即使國產手機其他系統不進行方舟編譯器編譯,但是隻要APP進行了編譯,就是我們打開應用軟件的速度會提升,這也是一個好事。

不過,Flyme或者MIUI這樣的國產系統是不會使用方舟編譯器的,這和它們發展相悖,畢竟它們可以自己研發這方面技術,使用華為,實際上有一種認輸的感覺。因此,它們應該,不,肯定不會使用!


LeoGo科技


說說我的理解啊,不一定對。編程語言都是高級語言,直接面對程序猿的。而機器卻有自己的機器語言。機器是聽不懂高級語言的。所以就需要一種翻譯的東西,把高級語言翻譯成機器語言。以前這個翻譯的軟件都是在每個人的手機上,邊運行邊翻譯,但是方舟編譯器給拿到了程序猿的那裡了,剛剛編程好就直接翻譯成機器語言,我們運行安裝時就直接是機器語言了,所以就省了一到工序,就沒那麼卡了。

所以根據上面的理解,那麼可以得出一個手機上沒有方舟編譯器也是可以使用的,前提是這個機器頂是安卓機,因為蘋果或者其它什麼系統的機器語言就又不一樣了,被翻譯後的語言蘋果的機器不認識


蔡琰Yc


白話科普方舟編譯器是什麼?

可以把[方舟編譯器]理解成給軟件開發工程師用的工具,跟最終的軟件用戶無關。比如:工程師用DW寫程序開發網站,但是網站用戶瀏覽網頁不需要用DW;設計工程師要用PS設計圖片,但是瀏覽圖片的用戶不必用PS。

用方舟編譯器編譯過的APP和安卓系統為什麼可以讓手機變快?

  • 以前安卓手機的工作流程:人類下達操作指令 > VM(編譯器和解釋器)翻譯成機器碼 > 機器執行指令。
  • 方舟編譯器編譯後的手機工作流程:人類下達指令 > 機器執行。繞過了VM過程,把以前發出指令後才進行的編譯工作,在APP開發階段就提前編譯好了。
  • 因為節省了中間進行的編譯時間,所以使用方舟編譯器編譯過的APP和系統會變快。

綜上結論:

  • 手機不需預置方舟編譯器,因為他是一個給程序員開發APP程序的工具而已。

  • 使用方舟編譯器編譯的APP,不管裝在哪個手機上,都會變快。


每天學點手機技巧


題主其實對華為方舟編譯器有些誤解。方舟編譯器能加快安卓應用的安裝、啟動和運行速度,就算手機沒有預置方舟編譯器,APP還是可以正常運行,不存在被編譯出來的APP。

說明這個問題之前,我們先來看看究竟什麼是編譯器。相信懂點編程的人都知道,計算機語言和我們的言語不同,如果我們想寫出一段程序,必須用計算機能看懂的言語進行編程,然後計算機才會按照指令去運行,這個過程我們叫做編譯。這就好比我們要和外國人交流,是先把我們想要表達的意思翻譯成外語,然後再把外國人的意思翻譯成中文。


這對於安卓系統是一個道理。與IOS系統不同,安卓系統是基於Java編程語言開發的。雖然Java在開發時更易開發,但手機不能直接識別。目前谷歌給出的最新解決方案是利用手機上的虛擬機進行同步編譯,這樣無疑會增加手機的負擔,使得系統在運行過程中變卡頓,尤其是當後臺運行程序變多時。

而華為方舟編譯器是業內第一款支持多語言同時編譯的編譯器,通俗易懂的說,華為方舟編譯器能直接將系統底層的Java語言翻譯成機器語言,並且該翻譯器是在系統代碼上完成的,並不會加重對手機的負擔。目前絕大部分安卓應用在開發時都不會使用單一語言,舉個例子,某APP的代碼使用了C語言和Java語言,當這個程序運行時,安卓系統要同時翻譯這兩種語言,然後再把兩者的結果相互混合。在有了方舟編譯器後,編譯器能同時翻譯兩種言語,以此來提高運行效率。



不知道各位看官們是如何看待華為方舟編譯器的呢?歡迎在下方評論留言,讓更多人看到您的觀點,謝謝!


分享到:


相關文章: