標籤:android 系統架構 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虛擬機器執行個體,其代碼在虛擬機器的解釋下得以執行。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Android系統架構、JVM和DalvikVM的區別