2008年10月31日 星期五

深入淺出Android程式設計(6)-什麼是Dalvik Virtual Machine?

在這個章節中,要來單獨討論什麼是Dalvik Virtual Machine,它是包含在Android Runtime中的元件,如圖5所示。




圖5

Dalvik Virtual Machine(Dalvik虛擬機器)是一種暫存器型態的虛擬機器。簡稱DVM,DVM在撰寫開發時就已經設想用最少的記憶體資源來執行,以及同時可執行多個VM為前提來開發的。

不過,上述的特性需要Linux作業系統的協助才能實現,例如程序問執行的控制、多執行緒的支援、記憶體管理等。事實上不僅Dalvik虛擬機器如此,Java虛擬機器也一樣有作業系統相依性,不同的作業系統需要不同的Java虛擬機器,而虛擬機器會針對其支援的作業系統再進行各項調整,以便能最佳化執行。

Dalvik虛擬機器有許多地方是參考Java虛擬機器設計,Dalvik虛擬機器所執行的中介碼並非是Java虛擬機器所執行的Java Bytecode,同時也不直接執行Java的類別檔(Java Class File),而是執行一種特有的檔案格式,稱為.dex。

Java的類別檔要先透過一套叫dx的編譯工具轉換成.dex檔後,才能讓Dalvik虛擬機器執行。而Delvik虛擬機器則改用Register Based的方式,變數皆存放於暫存器中,相較之下Delvik虛擬機器的指令就會少一點,速度也就會再加快一點。

有興趣的讀者,可以參考今年在台灣Google Developer Day 2008中,有關程本中先生所講述的Android:Dalvik VM Internals。網址:
http://sites.google.com/site/developerdaytaiwan/google-developer-day-2008-taiwan/android-dalvik-vm-internals

有關Android架構的部份就介紹到這個章節為止,下一個章節將要介紹有關如何下載安裝Android SDK、Eclipse、ADT套件等開發工具。

沒有留言: