安卓不是早就有編譯器了嗎?那華為的方舟編譯器跟這個有什麼區別嗎?

夕陽殘月376


傳統的java程序從編譯到運行的過程: java程序在電腦端編譯成字節碼,雖然是字節碼,但是這個字節碼是不能夠直接在機器上運行的,然後字節碼通過下載工具下載到智能設備上,智能設備上的JVM虛擬機解釋得到機器可以識別的二進制碼並運行二進制碼。

方舟編譯器編譯程序到運行程序的過程: 方舟編譯器根據華為官方的解釋:java程序可以直接編譯成機器可以識別的二進制碼。可以理解成他把JVM虛擬機從智能設備端移動到電腦端,java程序的編譯和解釋過程放到了電腦端來完成,而運行過程放到了智能設備端,智能設備不需要JVM虛擬機就可以直接運行二進制碼了。

總之,傳統的java編譯器的編譯過程是java程序編譯成字節碼,此字節碼不能直接在機器上運行,而華為的方舟編譯器通過編譯程序後的二進制碼可以直接在機器上運行。(字節碼和二進制碼都是二進制的,根據是否可以直接在機器上運行,用字節碼和二進制碼來表示兩者間的區別。)


NMLINUX


方舟編譯器最大的特點在於越過了虛擬機,這也是它跟現有安卓系統的區別點所在。

編譯方式不同

我們常用的Android系統,是邊解析邊執行的。程序運行中會首先啟動虛擬機,然後讀入應用代碼逐條解釋執行,會佔用較多的處理資源,影響程序執行的效率。即便AOT或JIT這類提前編譯技術一樣做不到擺脫虛擬機的執行。

Google也多次調整編譯代碼的模式,但是相比iOS依然有性能差距

而方舟編譯器不同,它是一種靜態的編譯方式。可將語言裡的動態特性直接翻譯成機器碼,手機安裝應用程序後可全速運行程序,徹底幹掉了虛擬機,極大提升了系統運行效率。

編譯過程和執行效率的差異。

安卓系統運行程序都需要先解析後執行,也就是說它的編譯工作是發生在用戶運行程序這一階段。

而方舟編譯器強在哪裡?它乾脆將編譯過程部署在開發環境中來,也就是說,方舟編譯的應用在開發階段就已完成。只要是經過編譯器編譯的應用,在應用市場上架以後,用戶下載的APK就是已經編譯好。這肯定是能帶來系統性能的顯著提升。

目前的Android採用的是解釋執行+JIT+AOT的模式,但並沒有擺脫一個前提,即應用在被打包成APK的時候,採用的還是Java代碼。因而Android系統用久之後還會卡頓和備受吐槽,而有目共睹的就是各種安卓手機目前也在靠不斷堆砌硬件來獲得更良好的系統流暢度。

據瞭解微博極速版實現了靜態化編譯後,流暢度提升高達60%。未來方舟編譯器是否能成功,還要看後續完整生態的搭建。希望開發者積極參與進來,最終給消費者帶來更為極致的體驗。


IT小眾


我個人感覺安卓是手機,電視的,不是整個物聯網,安卓是分開的;方舟編譯器是把整個物聯網編譯器,方舟是可以整合的!

還有安卓是美帝的,方舟是華為的是阿中哥的!!!

我一定選擇華為的方舟!!!

因為我尊敬我愛




一字馬回鄉


你好,我是魔鏡科技,很榮幸回答你這個問題

華為的方舟編譯器,就是將安卓應用開發者們所使用的JAVA、C/C++們轉換成機器代碼。編譯器就是將一種高級語言轉譯成一種低級語言的程序,起到關鍵的“承上啟下”作用。

通俗點講就是方舟編譯器直接編譯成了cpu聽得懂的指令,傳統的編譯器還需要一個翻譯


魔鏡科技


簡單來說java是解釋型語言,解釋一條運行一條。方舟編譯器的方案是直接打包成鴻蒙系統能夠直接執行的二進制文件,這樣就少了解釋這個步驟,速度就上去了。


分享到:


相關文章: