轉(zhuǎn)載請注明出處:https://www.niwoxuexi.com/blog/android/article/201.html
2014年6月谷歌I/O大會遍搞,Android L 改動幅度較大蔚舀,Google將直接放棄Dalvik虛擬機央碟,代替它的是傳聞已久的ART(Android Runtime)靶病。什么是ART开呐?穿仪,google為什么棄用Dalvik虛擬機障癌?要想回答這些問題,還需要先了解什么是虛擬機书斜、什么是JVM(java 虛擬機)的概念诬辈。
一、什么是虛擬機荐吉?
官方語言:虛擬機(Virtual Machine)指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)口渔。
解釋:用軟件模擬出來的一個計算機系統(tǒng)样屠。這些虛擬機完全就像真正的計算機那樣進(jìn)行工作,例如你可以安裝操作系統(tǒng)缺脉、安裝應(yīng)用程序痪欲、訪問網(wǎng)絡(luò)資源等等
虛擬機分兩種:系統(tǒng)虛擬機和進(jìn)程虛擬機
1,系統(tǒng)虛擬機
解釋:提供一個系統(tǒng)的仿真和抽象
平時用的VM Ware攻礼,或者VirtualBox 等屬于系統(tǒng)虛擬機业踢。能夠仿真出一個機器〗赴纾可在上面跑ubuntu知举,小紅帽的系統(tǒng)
2,進(jìn)程虛擬機
解釋:只提供一個進(jìn)程的仿真和抽象
我們下面講得Dalvik太伊,和JVM都是進(jìn)程虛擬機
例如:Dalvik, JVM(java Virtual Machine)雇锡,Microsoft.NET
二、什么是JVM(Java虛擬機)
官方語言:JVM是Java Virtual Machine(Java虛擬機)的縮寫僚焦,JVM是一種用于計算設(shè)備的規(guī)范锰提,它是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。
解釋:其實就是上面講到的進(jìn)程虛擬機
我們下看一下jvm的工作流程
java代碼用javac編譯成bytecode文件立肘,通過虛擬機可以編譯成各種平臺的匯編語言
所以:虛擬機的好處边坤,write once,compile once,run everywhere
三、什么是Dalvik
官方語言:Dalvik是Google公司自己設(shè)計用于Android平臺的虛擬機谅年。Dalvik虛擬機是Google等廠商合作開發(fā)的Android移動設(shè)備平臺的核心組成部分之一茧痒。它可以支持已轉(zhuǎn)換為 .dex(即Dalvik Executable)格式的Java應(yīng)用程序的運行,.dex格式是專為Dalvik設(shè)計的一種壓縮格式踢故,適合內(nèi)存和處理器速度有限的系統(tǒng)典格。Dalvik 經(jīng)過優(yōu)化,允許在有限的內(nèi)存中同時運行多個虛擬機的實例咬展,并且[1] 每一個Dalvik 應(yīng)用作為一個獨立的Linux 進(jìn)程執(zhí)行澜躺。獨立的進(jìn)程可以防止在虛擬機崩潰的時候所有程序都被關(guān)閉。
解釋:Dalvik是Google專門為Android平臺定制的虛擬機淋纲。主要是對內(nèi)存劳闹,CPU,電源等模塊進(jìn)行了優(yōu)化
四洽瞬、最好解釋 ART(Android Runtime)
ART 的機制與 Dalvik 不同本涕。在Dalvik下,應(yīng)用每次運行的時候伙窃,字節(jié)碼都需要通過即時編譯器轉(zhuǎn)換為機器碼菩颖,這會拖慢應(yīng)用的運行效率,而在ART 環(huán)境中为障,應(yīng)用在第一次安裝的時候晦闰,字節(jié)碼就會預(yù)先編譯成機器碼,使其成為真正的本地應(yīng)用鳍怨。這個過程叫做預(yù)編譯(AOT,Ahead-Of-Time)呻右。這樣的話,應(yīng)用的啟動(首次)和執(zhí)行都會變得更加快速
解釋:ART完全改變了這種做法鞋喇,在應(yīng)用安裝時就預(yù)編譯字節(jié)碼到機器語言声滥,在移除解釋代碼這一過程后,應(yīng)用程序執(zhí)行將更有效率侦香,啟動更快落塑。
Dalvik是Google公司自己設(shè)計用于Android平臺的虛擬機。Dalvik經(jīng)過優(yōu)化鄙皇,使其更適合android平臺芜赌。具體優(yōu)點會在下面和JVM進(jìn)行比較時說明。
四伴逸、ART和Dalvik相比優(yōu)缺點
優(yōu)點:
1缠沈、系統(tǒng)性能的顯著提升。
2、應(yīng)用啟動更快洲愤、運行更快颓芭、體驗更流暢、觸感反饋更及時柬赐。
3亡问、更長的電池續(xù)航能力。
4肛宋、支持更低的硬件州藕。
缺點:
1.機器碼占用的存儲空間更大,字節(jié)碼變?yōu)闄C器碼之后酝陈,可能會增加10%-20%(不過在應(yīng)用包中床玻,可執(zhí)行的代碼常常只是一部分。比如最新的 Google+ APK 是 28.3 MB沉帮,但是代碼只有 6.9 MB锈死。)
2.應(yīng)用的安裝時間會變長。著作權(quán)歸作者所有穆壕。
總的來說待牵,ART 的優(yōu)點還是遠(yuǎn)遠(yuǎn)超越其缺點的。畢竟喇勋,影響用戶體驗的要素中缨该,電池續(xù)航和應(yīng)用順暢運行更為重要。在于2014 年 10 月 15 日發(fā)布的全新 Android 操作系統(tǒng)Android 5.0上川背,Dalvik徹底被ART取代了压彭!