自己动手写Java虚拟机 封面

自己动手写Java虚拟机

暂无评分
字数
14.4万字
章节数
13
丛书
自己动手系列
ISBN
9787111534136

标签

内容简介

Java虚拟机是Java平台的基石,但OpenJDK等主流实现代码量庞大、以C++编写,初学者很容易在代码细节中迷失。本书另辟蹊径:不解读规范文档,也不逐行分析JDK源码,用Go语言从零开始,亲手实现一个能够运行真实class文件的Java虚拟机。全书共11章,随章节推进逐层叠加功能:先用java命令行工具搭起程序骨架,接着实现类路径搜索与class文件解析(魔数、版本号、常量池、属性表),再构建线程私有的运行时数据区(Java虚拟机栈、栈帧、局部变量表、操作数栈),随后实现指令集与解释器(含150余条字节码指令),并逐步支持类与对象、方法调用与返回、数组与字符串、类加载与方法区。第9章讨论本地方法调用与反射,实现Object.hashCode()、System.arraycopy()等基础方法;第10章讲解异常处理表与athrow指令;第11章追踪System类初始化与System.out.println()的执行过程,为全书收尾。每章代码都可独立编译运行,读者既能顺序实践,也能按需跳读。

编辑推荐

很多人学JVM,最后只记住“栈帧”“方法区”几个名词,遇到真实问题仍然说不出所以然。这本书的做法很直接:与其读代码,不如自己写一个。作者选择Go语言而非C++,避开了C++的复杂语法,又能用结构体和接口把复杂度压到可控范围;书中每一章都在上一章的基础上叠加功能,从读取class文件到跑通System.out.println(),读者能清楚看到一台虚拟机是怎样被一块块拼起来的。更适合把它当作“动手手册”:每章末尾都有测试代码,照着敲一遍比读三遍收获更大。全书篇幅精简,267页、14.4万字,节奏紧凑,适合有Java基础、想补齐底层认知的程序员作为第一个“造轮子”项目。

适合谁读

适合

  • 具备Java基础、想真正理解字节码与JVM运行机制的后端开发者
  • 希望用一个完整项目打通编译原理、类加载与解释器知识的程序员
  • 想通过“造轮子”提升工程能力的中高级工程师
  • 对Go语言有兴趣、希望以实战方式熟悉Go语法的读者

不适合

  • 完全没有编程基础、也从未接触过Java的入门读者
  • 只想速查JVM调优参数、不打算动手写代码的人
  • 期待深入讲解垃圾回收算法与GC调优的读者

阅读建议

  1. 按章节顺序边读边敲,每章跑通测试代码后再进入下一章,避免只读不写
  2. 第3章解析class文件时,配合javap -v查看真实字节码,对照书中的结构体字段理解
  3. 第5章指令集内容较多,可先实现常用指令跑通小程序,再回头补齐其余指令
  4. 遇到不熟悉的Go语法先跳过,重点放在数据结构设计与虚拟机执行流程上

出版社简介

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

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

目录

  1. 前言
  2. 第1章 命令行工具
  3. 第2章 搜索class文件
  4. 第3章 解析class文件
  5. 第4章 运行时数据区
  6. 第5章 指令集和解释器
  7. 第6章 类和对象
  8. 第7章 方法调用和返回
  9. 第8章 数组和字符串
  10. 第9章 本地方法调用
  11. 第10章 异常处理
  12. 第11章 结束
  13. 附录 指令表

常见问题

这本书需要先学Go语言吗?
不需要系统学习。书中会简要介绍用到的Go语法及它与Java的差异,有C、C++、C#或Java等语言经验的读者基本能读懂源码;若要更顺畅,可先花半天了解Go的结构体、接口与包机制。
和《深入理解Java虚拟机》有什么区别?
《深入理解Java虚拟机》侧重讲解JVM规范、内存模型、垃圾回收与性能调优;本书则是一个动手项目,用Go从零实现一台能运行class文件的虚拟机,偏重“自己实现一遍”的体验,两者可以互补阅读。
这本书讲垃圾回收吗?
本书聚焦类路径搜索、class文件解析、运行时数据区、指令解释器、类加载与本地方法等实现环节,并未把垃圾回收算法与GC调优作为重点,想深入GC需另找专著。
跟着做能实现到什么程度?
按书中章节推进,最终可以运行包含数组、字符串、方法调用、异常处理以及System.out.println()等基础功能的Java程序,足以跑通经典小例子,但并非完整可用的生产级JVM。
书中的代码能直接运行吗?
每章代码都经过调整,除第1章外均建立在前一章基础上,同时每章又可单独编译运行;建议按版本对应下载或自行录入,并准备好JDK与Go环境,即可复现书中示例。

读者评论

查询本书

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

同一作者

同类高分