深入理解Android:Java虚拟机ART 封面

深入理解Android:Java虚拟机ART

评分 4.8
字数
46.9万字
章节数
14
丛书
深入理解Android
ISBN
9787111621225

标签

内容简介

本书是“深入理解Android”系列中专门剖析ART虚拟机的一本,全书14章,以阅读真实源码为主线,系统讲解Android运行时环境ART的架构设计与实现原理。作者先为读者准备阅读源码所需的工具、环境与阅读方法,随后依次拆解Class文件、dex文件与ELF文件三种格式,这三者是理解Dalvik与ART虚拟机的必要基础;接着补足读懂ART源码所需的C++11关键知识。中段以ArtRuntime的创建与启动为主线,串起ART的主要模块、关键类与数据结构、类的解析加载链接与初始化,以及编译相关原理。随后深入虚拟机运行的核心环节:dex字节码转机器码的dex2oat流程与.oat、.art文件格式,解释执行与JIT,异常投递与处理,JNI在本机环境中的实现;最后聚焦Java线程执行(线程暂停与恢复、synchronized、Object wait/notify、volatile读写)、内存分配与释放、垃圾回收器的实现与Java Reference处理。书中以非标准UML图展示类关系与数据结构,理论讲解与源码片段相互印证,适合想从底层打通Android系统与应用运行机理的工程师系统研读。

编辑推荐

讲Android的书很多,真正敢把虚拟机源码一行行摊开来讲的极少。这本书难得之处在于它给出了完整的阅读路线:先补Class、dex、ELF三种文件格式与C++11基础,再顺着ArtRuntime创建与启动的主线进入模块结构,最后落到dex2oat、解释执行与JIT、JNI、线程、内存与垃圾回收这些最难的环节。全书依据Android 10源码展开,图、文、码混排,非标准UML图让类关系与数据结构一目了然。它不是速成手册,而是一部能陪你读完源码的“导航图”——读完后再回头看应用层的卡顿、内存抖动、冷启动慢,你会知道它们究竟发生在虚拟机的哪一段。对想从应用开发走向系统底层的工程师来说,这是一条比硬啃AOSP省力得多的路径。

适合谁读

适合

  • 有Java与C++基础,想弄清代码如何被虚拟机执行的中高级Android开发者
  • 从事Android系统层、性能优化或ROM工作的工程师
  • 对JVM/Dalvik/ART运行机制有研究兴趣的技术爱好者
  • 准备研读AOSP源码、需要一条入门路线的读者

不适合

  • 零基础编程入门者,书中大量源码片段与编译器概念门槛较高
  • 只想学Android界面开发或快速上手的应用初学者
  • 期望通过本书直接获得具体性能优化操作清单的实用派

阅读建议

  1. 按章节顺序读:文件格式与C++11两章不要跳过,后面几乎处处依赖。
  2. 对照Android 10源码同步阅读,把书中类名、函数名在本地代码里定位一遍。
  3. 第6至第9章为全书的难点核心,遇到编译细节可在同一章内反复回看,不必强行推进。
  4. 每读完一章用自己的话写下运行时调用链的小结,比只做标注更能巩固理解。

出版社简介

机械工业出版社 中国 · 成立于 1950 年

机械工业出版社(China Machine Press)在科技与专业出版之外,库内图书还体现出对心理学、计算机、管理、财经与社科等方向的持续关注。心理学方面收入荣格作品及分析心理学导论,并涉及压力与健康、成瘾与疗愈等应用议题;计算机领域有《计算机程序的构造和解释(JavaScript版)》;管理与财经类包括《管理行为(原书第4版)》《不平等的代价(珍藏版)》《这次不一样:八百年金融危机史(纪念版)》;科学哲学与科学史方面则有《世界观(原书第3版)》。相关作者资源涵盖C.G.荣格、威廉·麦圭尔、索努·沙姆达萨尼、加博尔·马泰等。公开资料有限,以上仅据库内图书归纳其出版面貌。

目录

  1. 第1章 本书必读
  2. 第2章 Class文件格式
  3. 第3章 Android中的Dex文件格式
  4. 第4章 ELF文件格式
  5. 第5章 读懂ART源码所需的C++11知识
  6. 第6章 ART虚拟机编译相关基础知识
  7. 第7章 ArtRuntime对象的创建
  8. 第8章 ArtRuntime的启动:类解析、加载、链接与初始化
  9. 第9章 dex2oat与.oat、.art文件格式
  10. 第10章 解释执行、JIT与异常处理
  11. 第11章 JNI在ART虚拟机中的实现
  12. 第12章 Java线程执行:线程暂停与恢复、synchronized、wait/notify、volatile
  13. 第13章 内存分配与释放
  14. 第14章 垃圾回收与Java Reference处理

常见问题

这本书需要什么前置基础?
需要一定的Java基础、C++(尤其C++11)阅读能力,以及操作系统与编译原理的基本概念。作者在第1章专门说明了工具、环境与阅读方法,但完全没有编程经验很难跟上源码分析。
这本书面向哪一版Android源码?
书中源码分析主要基于Android 10(10.0.0_r39 版本)的ART实现。读其他版本时,模块划分与整体设计依然适用,但具体类名、文件路径可能有变动。
和《深入理解Java虚拟机》有什么区别?
《深入理解Java虚拟机》以Oracle HotSpot为对象,偏重JVM规范与通用原理;本书则聚焦Android的ART,讲的是Dalvik字节码、dex2oat、AOT与JIT并存、.oat/.art文件等Android独有内容。
这本书适合当工具书查阅吗?
可以。目录按知识点切分得很细,遇到dex格式、JNI实现、垃圾回收等问题时可直接翻到对应章节;但首次阅读时仍建议按顺序通读,因为后面的分析依赖前面的文件格式基础。
书里的图解多吗?
较多。书中采用非标准UML图来展示类关系、数据结构与调用流程,配合源码片段使用,能帮助读者在不逐行读代码时也把握整体结构。

读者评论

查询本书

本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。

同一作者

同类高分