Course Code: I-009
針對 Dalvik VM 的 block diagram 進行說明,並與 Java VM 簡單比較。這是一個純技術性的 session,希望讓大家認識 Dalvik 虛擬器的用途與架構。課程也會說明 JNI 1.4 規格,以及 Dalvik VM 專用的執行環境 (Runtime) 進行摘要介紹。這是延續前一個 session 的主題,拆解 Dalvik 功能單位,對內部運作進行解析,同時也有少量的程式碼追蹤示範 (code tracing)。
虛擬機的重頭戲為「直譯的過程」,這個 session 將會以程式碼追蹤的方式,分析 running bytecode 的過程。此外,也會簡單介紹 Dalvik VM 的設計理念。課程也會示範如何開啟 JIT,並介紹 Dalvik 的另外一個重頭戲:Process 模式,以及 thread model。由於 Zygote 與 Dalvik VM 有密不可分的關係,這個 session 也將再次介紹 Zygote process,以及 Zygote 如何影響 Dalvik VM 的 core architecutre 設計。
1. Dalvik VM 架構總覽
- Block Diagram of Dalvik VM
- Dalvik VM vs JavaVM
- Instance of Dalvik VM
2. Dalvik VM 的 Runtime
- Introducing Zygote Model & Class Preloading
- JNI 1.4 & JNIEnv
- The Compilers (Interpreting)
- Class Cache
3. Dalvik VM 的 Interpreter
- Introducing Mterp
- From Bytecode to Mterp
- Flow of Interptreting
- JIT Compiler
- Process & Threading