ART(Android Runtime)和dalvik和jvm的解釋和對比

轉載請註明出處: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)指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統。

解釋:用軟件模擬出來的一個計算機系統。這些虛擬機完全就像真正的計算機那樣進行工作,例如你可以安裝操作系統、安裝應用程序、訪問網絡資源等等

虛擬機分兩種:系統虛擬機和進程虛擬機

1,系統虛擬機

解釋:提供一個系統的仿真和抽象

平時用的VM Ware,或者VirtualBox 等屬於系統虛擬機。能夠仿真出一個機器。可在上面跑ubuntu,小紅帽的系統

2,進程虛擬機

解釋:只提供一個進程的仿真和抽象

我們下面講得Dalvik,和JVM都是進程虛擬機

例如:Dalvik, JVM(java Virtual Machine),Microsoft.NET

二、什麼是JVM(Java虛擬機)

官方語言:JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用於計算設備的規範,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。

解釋:其實就是上面講到的進程虛擬機

我們下看一下jvm的工作流程

java代碼用javac編譯成bytecode文件,通過虛擬機可以編譯成各種平臺的彙編語言

所以:虛擬機的好處,write once,compile once,run everywhere

三、什麼是Dalvik

官方語言:Dalvik是Google公司自己設計用於Android平臺的虛擬機。Dalvik虛擬機是Google等廠商合作開發的Android移動設備平臺的核心組成部分之一。它可以支持已轉換爲 .dex(即Dalvik Executable)格式的Java應用程序的運行,.dex格式是專爲Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。Dalvik 經過優化,允許在有限的內存中同時運行多個虛擬機的實例,並且[1] 每一個Dalvik 應用作爲一個獨立的Linux 進程執行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉。

解釋:Dalvik是Google專門爲Android平臺定製的虛擬機。主要是對內存,CPU,電源等模塊進行了優化

四、最好解釋 ART(Android Runtime)

ART 的機制與 Dalvik 不同。在Dalvik下,應用每次運行的時候,字節碼都需要通過即時編譯器轉換爲機器碼,這會拖慢應用的運行效率,而在ART 環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,使其成爲真正的本地應用。這個過程叫做預編譯(AOT,Ahead-Of-Time)。這樣的話,應用的啓動(首次)和執行都會變得更加快速

解釋:ART完全改變了這種做法,在應用安裝時就預編譯字節碼到機器語言,在移除解釋代碼這一過程後,應用程序執行將更有效率,啓動更快。

Dalvik是Google公司自己設計用於Android平臺的虛擬機。Dalvik經過優化,使其更適合android平臺。具體優點會在下面和JVM進行比較時說明。


四、ART和Dalvik相比優缺點

優點:

1、系統性能的顯著提升。

2、應用啓動更快、運行更快、體驗更流暢、觸感反饋更及時。

3、更長的電池續航能力。

4、支持更低的硬件。

缺點:

1.機器碼佔用的存儲空間更大,字節碼變爲機器碼之後,可能會增加10%-20%(不過在應用包中,可執行的代碼常常只是一部分。比如最新的 Google+ APK 是 28.3 MB,但是代碼只有 6.9 MB。)

2.應用的安裝時間會變長。著作權歸作者所有。

總的來說,ART 的優點還是遠遠超越其缺點的。畢竟,影響用戶體驗的要素中,電池續航和應用順暢運行更爲重要。在於2014 年 10 月 15 日發佈的全新 Android 操作系統Android 5.0上,Dalvik徹底被ART取代了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章