編輯推薦
                                      《Android Dalvik虛擬機結構及機製剖析:第1捲 Dalvik虛擬機結構剖析》詳細介紹瞭Dalvik虛擬機的結構及其運行機製。章節編排是筆者分析Dalvik虛擬機實現原理的真實寫照,努力做到使讀者有由淺入深、齣凡入勝之感;必要的截圖和Dalvik虛擬機源碼片段,幫助讀者更加清晰地掌握關鍵原理;筆者濃墨重彩地提供瞭較多的“點撥”內容,希望給讀者另闢蹊徑、畫龍點睛之感。
  《Android Dalvik虛擬機結構及機製剖析:第1捲 Dalvik虛擬機結構剖析》作為《Android Dalvik虛擬機結構及機製剖析》係列書的基礎部分,目的在於幫助讀者在學習和理解Dalvik虛擬機過程中打下堅實基礎,使讀者更加細緻地瞭解Android應用程序的執行過程,幫助讀者更加閤理地設計應用程序,有效提高應用程序的運行速度。                 
內容簡介
     《Android Dalvik虛擬機結構及機製剖析:第1捲 Dalvik虛擬機結構剖析》是一本以情景方式對Android的源代碼進行深入分析的書,內容廣泛,主要從Dalvik虛擬機整體結構、獲取和編譯Dalvik虛擬機的源碼、源碼分析輔助工具使用、dex文件及Dalvik字節碼格式解析、Dalvik虛擬機下的係統工具介紹及Dalvik虛擬機執行流程簡述等方麵進行闡述,幫助讀者從宏觀上瞭解Dalvik虛擬機的架構設計,為有興趣閱讀Dalvik虛擬機源碼的讀者提供必要的入門指導。
  《Android Dalvik虛擬機結構及機製剖析:第1捲 Dalvik虛擬機結構剖析》共6章:第1章為準備工作,在這一章中主要介紹瞭Dalvik虛擬機的功用、分析Dalvik源碼所用到的主要方法以及如何搭建Dalvik源碼分析環境;第2章為源碼分析輔助工具介紹,包括Vim、Doxygen、GDBSERVER等;第3章為Dex文件以及Dalvik字節碼格式分析;第4章為係統工具介紹,在這一章中主要介紹瞭Dalvik虛擬機的一些重要係統工具,通過對係統工具的介紹,讓讀者對虛擬機內部的實現機製更加清晰;第5章為Dalvik虛擬機執行流程簡述,通過這一章的介紹,旨在讓讀者對Dalvik虛擬機的整體功能架構有一個宏觀的認識,為後續進一步掌握各個功能模塊的原理功能做好相應的知識鋪墊;第6章為調試支撐模塊,在這一章中主要介紹瞭調試支撐模塊的基本原理。
  通過閱讀《Android Dalvik虛擬機結構及機製剖析:第1捲 Dalvik虛擬機結構剖析》,讓讀者瞭解Dalvik虛擬機在Android應用程序運行過程中所扮演的重要角色及其不可替代的價值;同時對Android應用程序的執行過程有更加細緻的瞭解,可以幫助讀者優化自己編寫的應用程序,更加閤理地設計應用程序結構,有效提高應用程序的運行速度。     
內頁插圖
          目錄
   第1章 準備工作
1.1 本章概述
1.1.1 什麼是Dalvik虛擬機
1.1.2 Dalvik虛擬機的功能
1.1.3 Dalvik虛擬機與Java虛擬機的區彆
1.1.4 Dalvik虛擬機的特性
1.2 Ubuntu Linux係統安裝
1.3 工作目錄設置
1.4 下載、編譯和運行Android內核源代碼
1.4.1 下載Android內核源代碼
1.4.2 整體編譯Android源代碼
1.4.3 運行Android模擬器
1.5 編譯經過修改的Android源碼
1.6 開發第一個Android應用程序
小結
第2章 源碼分析輔助工具
2.1 本章概述
2.2 Vim源碼閱讀環境搭建
2.3 Doxygen工具
2.4 GDBSERVER工具
小結
第3章 Dex文件及Dalvik字節碼格式解析
3.1 本章概述
3.2 Dex文件格式
3.2.1 Dex文件中的數據結構
3.2.2 Dex文件結構分析
3.3 Dalvik字節碼介紹
3.3.1 Dalvik字節碼總體設計
3.3.2 Dalvik字節碼指令格式
3.4 Odex文件簡介
3.4.1 什麼是“優化文件”
3.4.2 Odex文件結構
3.4.3 Odex文件加速係統運行速度
3.4.4 手機“減負”問題再討論
小結
第4章 係統工具
4.1 本章概述
4.2 dexdump工具
4.2.1 dexdump工具簡介
4.2.2 dexdump工具使用方法
4.3 dexdeps工具
4.3.1 dexdeps工具簡介
4.3.2 dexdeps工具使用方法
4.4 dexlist工具
4.4.1 dexlist工具簡介
4.4.2 dexlist工具使用說明
4.5 dexopt工具
4.5.1 dexopt工具簡介
4.5.2 dexopt工具使用方法
4.6 dvz工具
4.6.1 dvz工具簡介
4.6.2 dvz工具使用方法
小結
第5章 開發分析工具
5.1 本章概述
5.2 trace文件分析工具
5.2.1 trace文件分析工具簡介
5.2.2 trace文件分析工具使用方法
5.3 Heap Profile工具
5.3.1 Heap Profile工具簡介
5.3.2 Heap Profile工具使用方法
5.4 DDMS工具
5.4.1 啓動
5.4.2 DDMS原理和特性
5.4.3 DDMS具體功能
5.4.4 進程監控
5.4.5 使用文件瀏覽器
5.4.6 模擬器控製
5.4.7 應用程序日誌
小結
第6章 Dalvik虛擬機執行流程詳解
6.1 本章概述
6.2 Dalvik虛擬機的入口點介紹
6.2.1 Dalvik虛擬機在x86平颱運行的入口點
6.2.2 Dalvik虛擬機運行在ARM平颱的入口點
6.2.3 Dalvik虛擬機的初始化
6.3 Zygote進程
6.4 Dalvik虛擬機運行應用程序過程
6.4.1 apk文件生成
6.4.2 Dalvik虛擬機運行應用程序的主要流程
小結      
前言/序言
       
				 
				
				
					《Dalvik虛擬機:運行Android應用的底層引擎》  一、 探索Android應用運行的幕後英雄  在每一颱Android設備上,數以億計的應用如同活潑的精靈,在屏幕上跳躍、交互、為用戶帶來豐富多彩的體驗。然而,在這流暢的界麵背後,隱藏著一個至關重要的技術基石——Dalvik虛擬機。它不僅僅是一個簡單的運行環境,更是Android應用生命周期中不可或缺的“心髒”。本書將帶您深入Dalvik虛擬機的核心,剝開層層迷霧,理解它是如何誕生、演進,並最終成為支撐起整個Android生態係統的關鍵。  如果您曾好奇過,當您點擊一個應用圖標時,究竟發生瞭什麼?Java源代碼是如何轉化為機器能夠理解的指令?Dalvik虛擬機又扮演著怎樣的角色?本書將一一解答這些疑問,為您揭示Android應用運行的底層機製,讓您不再滿足於錶麵的交互,而是能夠真正理解其背後的技術原理。  二、 Dalvik虛擬機的曆史與演進:從萌芽到成熟  Dalvik虛擬機並非一夜之間齣現,它的誕生與發展,是Android項目早期團隊不懈探索與創新的結果。在Android誕生之初,移動設備的資源極其有限,性能與功耗的平衡是首要考量。傳統的Java虛擬機(JVM)在設計上更側重於桌麵和服務器環境,其內存管理、垃圾迴收機製以及指令集等方麵,難以直接適用於資源受限的移動平颱。  正是在這樣的背景下,Dalvik虛擬機應運而生。它藉鑒瞭JVM的許多設計理念,但又針對移動設備的特點進行瞭大量的優化和創新。從最初的簡單實現,到後續版本的不斷迭代,Dalvik虛擬機經曆瞭顯著的演進。每一次更新都帶來瞭性能的提升、內存占用的減少,以及對新硬件特性的更好支持。  本書將迴顧Dalvik虛擬機的發展曆程,梳理其關鍵版本的變化,讓您瞭解它是如何一步步成長為今天我們所熟知的樣子。我們將探討早期設計的考量,以及隨著Android生態的壯大,Dalvik虛擬機所麵臨的新挑戰和解決方案。這將幫助您建立起對Dalvik虛擬機全局性的認識,理解其設計哲學背後的邏輯。  三、 Dalvik字節碼:跨越開發語言與硬件的橋梁  Android應用的主要開發語言是Java(或Kotlin,其最終也會被編譯為Dalvik字節碼)。然而,Java源代碼並不能直接在硬件上運行。它需要一個中間錶示形式,這個形式就是Dalvik字節碼(Dex Code)。Dalvik虛擬機正是負責解釋和執行這些字節碼的引擎。  本書將詳細剖析Dalvik字節碼的結構和特性。我們將深入瞭解DEX文件格式,它是Dalvik字節碼的載體,其中包含瞭類定義、方法、字段、常量池等關鍵信息。您將學習到DEX文件是如何組織的,各個部分扮演著怎樣的角色,以及如何解析DEX文件中的數據。  更重要的是,我們將探討Dalvik字節碼與傳統JVM字節碼之間的異同。雖然都屬於虛擬機字節碼,但Dalvik字節碼在設計上更加緊湊,指令集也針對移動設備進行瞭優化,以達到更高的執行效率和更小的內存占用。理解這些差異,有助於您更深刻地理解Dalvik虛擬機的設計目標和技術優勢。  四、 Dalvik虛擬機的內存管理:高效與優雅的平衡  內存是移動設備寶貴的資源,Dalvik虛擬機在內存管理方麵投入瞭大量的精力。本書將詳細闡述Dalvik虛擬機的內存模型,包括堆(Heap)、棧(Stack)以及方法區(Method Area)等區域的劃分和管理。  我們將重點解析Dalvik虛擬機的垃圾迴收(Garbage Collection, GC)機製。垃圾迴收是虛擬機自動管理內存的關鍵。Dalvik虛擬機采用瞭多種垃圾迴收算法,例如標記-清除(Mark-Sweep)、復製(Copying)等,並根據不同的場景進行組閤和優化。您將瞭解到垃圾迴收是如何工作的,它如何檢測和迴收不再使用的對象,以及如何最小化GC對應用程序性能的影響。  此外,我們還將探討Dalvik虛擬機的內存分配策略,包括對象分配、數組分配等。理解這些機製,將幫助您寫齣更高效、更不容易齣現內存泄漏的Android應用程序,並能更好地診斷和解決內存相關的問題。  五、 Dalvik虛擬機的執行引擎:指令的誕生與運行  Dalvik虛擬機的核心在於其執行引擎,它負責將Dalvik字節碼轉化為硬件能夠理解的指令並執行。本書將深入探討Dalvik執行引擎的工作原理。  我們將分析Dalvik指令集(Dalvik Opcodes)的特點。Dalvik指令集的設計是為瞭高效地執行Dalvik字節碼,它包含瞭一係列操作碼(Opcodes)和操作數(Operands),用於執行算術運算、邏輯運算、方法調用、內存訪問等各種操作。您將學習到常見的Dalvik指令及其功能,瞭解它們是如何組閤起來完成復雜的程序邏輯的。  此外,我們還將介紹Dalvik虛擬機的即時編譯(Just-In-Time Compilation, JIT)技術。雖然Dalvik虛擬機最初以解釋執行為主,但後續版本引入瞭JIT編譯器,可以將熱點代碼(經常執行的代碼)編譯成本地機器碼,從而顯著提升應用程序的執行速度。我們將剖析JIT編譯器的工作流程,以及它如何動態地優化代碼執行。  六、 Dalvik虛擬機的綫程與並發:多任務處理的藝術  現代Android應用需要處理多項任務,例如UI渲染、網絡請求、後颱處理等,這離不開多綫程的支持。Dalvik虛擬機提供瞭強大的綫程模型,以支持並發執行。  本書將深入研究Dalvik虛擬機的綫程創建、管理和調度機製。您將瞭解到Android應用的綫程是如何在Dalvik虛擬機中創建和運行的,以及Dalvik虛擬機如何管理這些綫程的生命周期。我們將探討Dalvik虛擬機是如何實現綫程同步和互斥的,包括鎖(Locks)、信號量(Semaphores)等機製,以確保並發訪問共享資源的安全性。  理解Dalvik虛擬機的綫程模型,將幫助您編寫更穩定、更具響應性的多綫程Android應用程序,並能更好地理解和解決多綫程帶來的競態條件(Race Conditions)和死鎖(Deadlocks)等問題。  七、 Dalvik虛擬機的安全性:保障應用與數據的雙重盾牌  在移動互聯網時代,安全性至關重要。Dalvik虛擬機在設計上也充分考慮瞭安全性問題,為Android應用提供瞭多層次的安全保障。  本書將探討Dalvik虛擬機的沙箱(Sandbox)機製。Dalvik虛擬機為每個應用程序提供一個獨立的運行環境,限製應用程序對係統資源的訪問,防止惡意應用竊取用戶數據或破壞係統穩定。您將瞭解到沙箱是如何實現的,它如何限製應用的權限,以及它是如何與Android的整體安全架構協同工作的。  此外,我們還將分析Dalvik虛擬機的代碼校驗和內存保護機製。這些機製旨在防止代碼被篡鍵、防止緩衝區溢齣等常見的安全漏洞,從而為Android應用程序提供一個更安全的運行環境。  八、 學習 Dalvik 虛擬機結構與機製的價值  深入理解Dalvik虛擬機的結構和機製,對於Android開發者而言具有深遠的意義。     提升應用性能: 瞭解 Dalvik 虛擬機的內存管理、垃圾迴收和執行引擎,能夠幫助開發者編寫齣更高效、更流暢的應用,減少不必要的資源消耗。    解決疑難雜癥: 許多難以捉摸的bug,如內存泄漏、 ANR(Application Not Responding)等,往往與虛擬機底層機製相關。深入的理解能夠幫助開發者快速定位和解決這些問題。    優化開發實踐: 掌握 Dalvik 虛擬機的特性,能夠指導開發者做齣更優的編程決策,例如選擇閤適的數據結構,設計更閤理的並發模型等。    深入理解 Android 生態: Dalvik 虛擬機是 Android 生態係統的基石之一,理解它有助於更全麵地認識 Android 係統的運作方式,為進一步學習 Android Framework、ART 虛擬機等打下堅實基礎。    為技術進階鋪路: 隨著 Android 版本的迭代,ART(Android Runtime)虛擬機逐漸取代瞭 Dalvik,但 ART 繼承瞭 Dalvik 的許多設計思想,並且在性能和功能上有瞭進一步的提升。深入理解 Dalvik,將使您更容易理解和掌握 ART 的新特性。  九、 誰應該閱讀本書?  本書適閤以下人群:     有一定 Android 開發經驗的開發者: 希望深入理解 Android 應用運行機製,提升開發技能。    對虛擬機技術感興趣的工程師: 希望瞭解一種在資源受限環境下高效運行的虛擬機是如何設計的。    計算機科學專業的學生: 希望將理論知識與實際應用相結閤,深入理解操作係統、編譯原理等相關概念。    需要進行 Android 係統底層研究的開發者: 需要深入瞭解 Android 核心組件的運作原理。  本書承諾:  本書將以清晰、係統、深入的方式,帶領您一步步揭開 Dalvik 虛擬機的神秘麵紗。我們力求用通俗易懂的語言,結閤豐富的示例,將復雜的概念具象化,讓您在閱讀過程中感受到探索的樂趣,並最終獲得紮實的 Dalvik 虛擬機知識。讓我們一起開啓這場探索 Android 底層引擎的精彩旅程!