為什麼安卓不放棄虛擬機機制,轉變更高效的方式,例如ios一樣?

陶金武


    這是因為安卓系統採用了Java編程語言,所有的APP都是用Java語言編寫的,而Java語言離不開虛擬機。

    Java語言

    Java語言是1995年5月發佈的,有一個很重要的特性就是跨平臺,藉助虛擬機機制解釋源代碼調度硬件資源。用Java編寫的代碼,首先需要將源代碼轉換成字節碼,然後在設備上運行時,再將字節碼編譯或者解釋成硬件能夠聽得懂的01機器碼。


    也就是說,從Java的字節碼到機器碼,需要兩樣東西:

  • 1)虛擬機,實現硬件資源的調度,也是實現跨平臺的關鍵因素,屏蔽不同硬件平臺的差異。

  • 2)解釋器或者編譯器,將java字節碼編譯成01機器碼,不過編譯器實現代碼的一次編譯,形成二進制文件;解釋器是執行一句翻譯一句。可以看出編譯器的效率要高很多。

    Android系統的演變

    Android系統誕生於2003年,早期是為數字相機開發的系統,後來發現用處不大,加上智能手機的快速發展,於是android系統成為一款面向智能手機的操作哦系統。直到2005年7月,android被google收購,才真正的被髮揚光大,goolge聯合84家硬件製造商,成立開放手持設備聯盟,共同推動android系統的發展,才成就了今天的android系統,成為全球第一大智能手機操作系統。

    我們來看一下android系統的不同版本:

  • Android 1.0,2008年推出,採用了一個名為Dalvik的虛擬機,集成了一個解釋器,app運行時,調用這個解釋器,對代碼逐行解釋,執行效率低,速度很慢;

  • Android 2.2,2010年推出,引入了JIT(Just In Time)機制,即時編譯機制,當app運行時,直接編譯成01這樣的機器碼,不用一句一句的翻譯。當出現不常用的功能時,再調用解釋器翻譯,加快了運行速度,但是啟動app時,每次都要重新編譯,不能一勞永逸;

  • Android 5.0,2014年推出,將虛擬機Dalvik換成了ART(Android Run Time),同時將JIT的編譯器換成了AOT(Ahead of Time),這樣App安裝到手機的同時,代碼預先編譯成01機器碼,不太好翻譯的代碼,仍然用解釋器翻譯,從此每次打開app時,不需要重新編譯了,但是app的安裝時間有點兒長,佔用手機存儲空間比較多;

  • Android 7.0,2017年推出,採用了混合編譯的機制,安裝時先不編譯成中間代碼,而是用戶空閒時,將能夠編譯成機器碼的部分,通過AOT編譯成靜態代碼,不能編譯的,調用JIT+解釋器。

    可以看出,google一直在對android系統的解釋器、編譯器進行優化,提升執行效率。但是無論是編譯器,還是解釋器,都是在虛擬機上打補丁,本質上仍然沒有徹底擺脫虛擬機。


    華為“方舟編譯器”

    我們看一看華為的方舟編譯器是如何解決這個問題的。首先,方舟編譯器不是一蹴而就的,而是從2009年就開始了研究了,同年華為也開始了5G技術的研究,直到10年後,也就是2019年4月,華為才正式推出方舟編譯器。

    方舟編譯器,繞過了android操作系統app運行時必須依賴的虛擬機,將java、C、C++等混合代碼一次編譯成機器碼,可以直接運行在機器上,沒有JNI開銷,最終也提升了手機的流暢度。

    嚴格說,方舟編譯器是一個編譯運行系統,需要開發環境和智能手機終端的配合,華為的EMUI 9.0以上的系統都支持方舟編譯器,經方舟編譯器編譯的app,提升了運行效率,直觀體驗就是手機更加流暢。


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

Geek視界


華為的方舟編譯器就可以繞過虛擬機直接運行,類似iOS勝過iOS,原本華為準備用編譯器幫整個安卓編譯,讓安卓10順利的升級為華為版安卓11,但谷歌不領情,反而制裁華為,不讓華為用gms,所以華為不得不放棄這個計劃,推出自己的hms,hms就可以繞過虛擬機運行,所以運行的比安卓快60%,像支付寶也是靠方舟編譯器才能解決卡頓的問題,沒有方舟編譯器阿里根本沒那個技術。就像騰訊全系都不支持華為的,所以微信沒支付寶快。


娛十說


眾所周知,蘋果手機使用的是IOS系統,其速度、流暢度都要比國產機的Android系統高,其實Android系統不能不能提高速度和流暢度,比如華為自研了“方舟編譯器”就能大幅度的解決這一問題,它可以繞過虛擬機機制,提高安卓設備的運行速度,但因為Android系統是屬於美國谷歌公司的,而谷歌公司又中斷(制裁)了與華為公司的合作,所以華為不能使用GMS,因此Android系統自身的流暢度一直並未得到明顯的改變,只不過是因為手機處理器的性能越來越高了以後,而顯得“速度快”了而已!

還有,Android系統和ios系統的開發語言是不同的,這就迫使了安卓系統必須要使用虛擬機機制,這是無法改變/無法割除的,所以只能“曲線救國”,採取別的方法來提高運行速度,而華為公司在這方面做的就不錯,它們自主研發了HMS,可以讓APP繞開虛擬機,因此流暢度要比原始的Android系統快60%左右,咱們就拿支付寶和微信這兩大支付軟件來舉例吧:

  1. 支付寶支持華為的方舟編譯器,所以打開速度快,並且長按圖標以後,還會出現快捷支付的選項,比如“收錢”“付錢”“掃一掃”等等

  2. 微信就不支持了,所以打開速度、支付速度都沒支付寶快,長按圖標也只是出現卸載的選項,並沒有快捷支付的功能!


桃園Computer


這個問題的答案我前面有一篇關於三星銷量全球第一的文章中曾經提到過,這裡我再說一下。

在正式說這個事之前,讓我們回憶華為被谷歌關閉GMS事件。可能絕大部份看官對GMS是什麼都不清楚,但引發的後果很多人還是很清楚的,那就是華為手機基本退出了海外市場,換句話說,華為手機在國外沒人買了。一個GMS關閉為什麼會讓華為喪失海外市場呢?這就需要我們瞭解一下安卓系統到底怎麼用。

很多人說安卓開源,IOS閉源,也對也錯。安卓系統適配全球絕大多數品牌的手機,從這個角度來看,它是開源的,但涉及到具體的運行,其實安卓和iOS並沒有太大的區別。

在國外,所有的安卓手機安裝軟件,大多數途徑都是經過谷歌商店下載。這個谷歌商店就有點類似於蘋果的App Store,都是經過審核的。所以在國外的安卓手機,你不管是購買收費軟件,還是在遊戲內充值內購,谷歌公司都會提成,提成率和蘋果差不多。而谷歌要做的,就是對這些軟件進行把關。未經過用戶同意,後臺自啟,後臺下載甚至安裝推廣其他軟件,有這種行為的軟件在谷歌商店中是無法上架的。這就意味著國外在谷歌商店的把控下,各軟件商的行為是沒那麼離譜的。沒有後臺啟動,沒有默認安裝,安卓系統,特別是三星這類旗艦機的使用時間還是不錯的,窮一點的,用個三五年,沒什麼問題。而華為被谷歌關掉GMS,也就意味著國外的華為手機用戶無法通過谷歌商店下載應用軟件,你可以想象一下一部蘋果手機如果不能用App Store下載軟件,這就意味著一部智能手機變成了一部功能機,只能接打電話,收發短信。那我要這部蘋果手機做什麼?正是因為這樣,華為在海外手機市場瞬間清零,沒人要了。

通過這個事情可以看出,安卓系統的軟件在國外並不是無法無天,有谷歌商店把關,安卓系統的流暢程度是不弱於IOS的,這也是為什麼三星手機售價不低於蘋果的前提下,他的銷量也始終和蘋果不相上下,更多時候甚至是壓蘋果一頭。

可這種情況在國內就完全不一樣了。

由於谷歌公司從2008年開始就退出了中國,導致中國手機雖然可以使用安卓系統,但軟件上架的權利卻不在谷歌,也沒有誰對軟件把控,致使安卓軟件在中國的手機軟件市場野蠻發展,無論一個什麼軟件,要通訊錄,要照片權限,要相機權限。整個就是一無法無天。而我們在使用安卓手機的時候,各種默認安裝,各種後臺自啟,誰扛得住?也就是現在的新手機普遍使用6+128配置,才讓卡頓好一些。以前的安卓根本就用不到一年就要人命,這還不分品牌。說到底,這不是手機廠商的問題,也不是安卓系統的問題,是手機軟件無人監管的問題。

但這個問題是隻有中國的安卓才特有的問題,其他地方的安卓用得都槓槓的,人家谷歌公司都退出中國了,憑什麼管我們這邊呢?所以我們這邊的安卓機就只能繼續卡了。


雲在藍天8480


這兩款系統使用的開發語言不同。

安卓系統的底層建立在Linux系統上。採用的是虛擬機運行機制。

IOS是基於UNIX系統,IOS採用的是沙盒運行機制。

兩者後臺制度也不同。IOS中任何第三方程序都不能在後臺運行。安卓中任何程序都能在後臺運行,直到沒有內存才會關閉。

所以安卓為了保證能流暢運行。不得不把內存提的更高。才能穩定流暢運行。就像目前市面上蘋果4G的運行內存非常流暢。然而安卓已經達到6G,8G甚至12G的運行內存了。

安卓在運行內存足夠的情況下,與系統的UI優化。流暢性相當的高。運行處理,操作速度已經與蘋果iOS系統相差無幾。甚至有些方面已經超越了蘋果iOS系統。


陳莫vlog


iOS的object c與swift也是基於虛擬機,只是不是Java虛擬機而已。他們都不是基於純編譯型語言,而是解釋性及半解釋性語言。但apple的軟件不需要做大量兼容性代碼,而且與硬件的優化也做的到位,加上用戶總是拿一款或幾款硬件的體驗對Android與iOS進行評價,結果可想而知


鏞人隨筆


那不就是Linux手機?很多廠商做過,不了了之。安卓要不是傍上JAVA,也不會有如今的局面。JAVA開發者比C/C++多太多了。WP就死在這上面。IOS要不是有硬件支撐,也早死了。

安卓起初的時候是要做一套跨平臺的移動系統,事實上以前也出現過X86和MIPS的手機,只不過後來被ARM一統天下,才會讓人覺得這個JVM是個累贅。


光明右使8787


兩個字版權,linux內核是開源的!而且是最Nb 的GPL!凡是引用修改衍生這個協議的軟件,必須也是開源的,遵從GPL的!所以安卓也是開源的遵從GPl的!同理所有在安卓上開發的應用也必須遵從!(你必須使用API之類的庫接口吧?),你可以腦補一下二馬家的都開源,這會導致APP開發商抵制,於是乎就有了虛擬機這個思路,所以APP運行在vm中可以避開GPL

當然還有其他優點,但這個最重要!所以說烏班圖這類的手機系統我不大看好,畢竟開源不是money 人人愛


我就看一眼


現在兩個系統差別沒有那麼大了,互相學習,取長補短,以後會越來越像。不過如果說系統,那肯定是安卓水準高了,支持這麼多硬件,而且這麼開放的系統,現在的旗艦機跟蘋果性能沒啥區別,甚至某些地方還要更好。


呵呵20202020


Android的虛擬機也是Android的權限模型。每一個應用就是一個虛擬機,有各自的內存空間。方便管理。


分享到:


相關文章: