1. 程式人生 > >Android系統架構、JVM和DalvikVM的區別

Android系統架構、JVM和DalvikVM的區別

一、系統框架
這裡寫圖片描述

1.Anroid大致分為四層結構,五塊區域
1)應用程式層(Applications)
所有安裝在手機上的應用程式都屬於這一層。
2)應用程式框架(Application Framework)
提供大量的API供開發人員使用,Android自帶的一些核心應用就是使用這些API完成的。
3)函式庫(Libraries)
—Surface Manager:管理對顯示子系統的訪問,並可以對多個應用程式的2D和3D圖層機提供無縫整合
—Media Framework:基於PacketVideo的OpenCORE,支援播放和錄製多種流行的音訊和視訊格式,以及檢視靜態圖片
—SQLite提供資料庫的支援
—OpenGL|ES提供3D繪圖的支援
—FreeType:點陣圖和向量字型顯示
—WebKit:Web瀏覽器引擎,為Android瀏覽器提供支援
—SGL:底層的2D圖形引擎
—SSL:在Android中通訊實現握手
—C/C++(libc)庫來為Android系統提供了主要的特性支援
4)執行時(Android Runtime)
由兩部分組成:Android核心庫集和Dalvik虛擬機器。核心庫集提供了Java語言核心庫所能使用的絕大部分功能,Dalvik虛擬機器負責執行Android應用程式。

5)Linux核心
Linux核心提供安全性、記憶體管理、程序管理、網路協議棧和驅動模型等核心系統服務,Linux核心也是系統硬體和軟體疊層之間的抽象層。

二、JVM和DalvikVM的區別

DalvikVM:
Dalvik虛擬機器是Google的用於移動裝置的Android平臺的一個主要部分。虛擬機器可執行Java平臺應用程式,這些應用程式被轉換成緊湊的Dalvik可執行格式(.dex),該格式適合記憶體和處理器速度受限的系統。
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
區別:
1.Dalvik並未完全遵守JVM規範,兩者也不相容。
2.JVM虛擬機器執行的是位元組碼,Dalvik執行的是其專有的dex(Dalvik Executable)檔案。
3.JVM直接從.class檔案或者jar包中載入位元組碼然後執行,而Dalvik則無法從.class檔案或jar包中載入位元組碼,而是通過DX工具將應用程式所欲的.class檔案編譯成.dex檔案,然後執行.dex檔案。
4.Dalvik 基於暫存器,而 JVM 基於棧。基於暫存器的虛擬機器對於更大的程式來說,在它們編譯的時候,花費的時間更短。
5.Dalvik負責程序隔離和執行緒管理,每一個Android應用在底層都會對應一個獨立的Dalvik虛擬機器例項,其程式碼在虛擬機器的解釋下得以執行。
這裡寫圖片描述