标签
内容简介
本书是 Oracle 官方发布的《Java 虚拟机规范》Java SE 7 版的中文译本,属于 Java 核心技术系列。它整合了自 1999 年《Java 虚拟机规范(第 2 版)》发布以来 Java 世界出现的技术变化,修正了第 2 版中的多处错误以及对主流虚拟机实现而言已经过时的内容,并澄清了 Java 虚拟机与 Java 语言之间一些模糊的概念。 全书共 7 章:第 1 章从宏观角度梳理 Java 虚拟机与 Java 语言的关系及发展历程;第 2 章概述虚拟机整体架构,包括 class 文件格式、数据类型、原始类型与引用类型、运行时数据区(pc 寄存器、Java 虚拟机栈、堆、方法区、运行时常量池、本地方法栈)、栈帧、对象表示、浮点算法与异常等;第 3 章说明 Java 程序如何被编译为虚拟机指令集,涉及常量、局部变量、控制结构、算术运算、参数传递、方法调用、数组、操作数栈、异常处理、同步与注解;第 4 章深入剖析 class 文件格式,包括 ClassFile 结构、描述符与签名、常量池、字段、方法、属性、代码约束与 class 文件校验;第 5 章定义虚拟机启动以及类和接口的加载、链接与初始化过程;第 6 章逐条阐述指令集;第 7 章提供以操作码值为索引的操作码助记符表。 需要说明的是,本书是保证各家 Java 虚拟机实现具备统一外部接口的契约性规范,并非某一款具体虚拟机的实现说明书;随着高性能虚拟机的发展,真实实现细节已逐渐与规范描述拉开差距。
编辑推荐
如果你写过不少 Java 代码,却总在「为什么这里会抛 StackOverflowError」「泛型擦除到底擦掉了什么」「字节码里的 invokespecial 和 invokevirtual 差在哪」这类问题上卡壳,那么这本规范就是最该补齐的那块地基。它不是教程,而是 Oracle 官方发布的技术契约:每一种数据类型、每一个运行时数据区、每一个属性表、每一条指令的语义,都以近乎法律条文的方式被精确定义。 本版的价值在于「承前启后」。它把自 1999 年第 2 版以来的十余年变化一次性收拢,扩充 class 文件格式以支持泛型与变长参数方法等新语言特性,补充了 invokedynamic 等新常量池结构,同时清理了旧版中大量错误与过时描述,并重写了基于类型检查的字节码验证规则——这部分正是理解现代 JVM 类校验机制的关键。 中文版由周志明等四位译者合作完成,译文经过多轮校对,术语体系与国内 JVM 社区通行说法一致;32 开、三百余页的体量,作为案头工具书翻查并不吃力。无论你是想读懂 class 文件反编译结果,还是准备动手写一个玩具虚拟机,它都会是你反复回来查阅的那一本。
适合谁读
适合
- 已掌握 Java 语法、想深入理解 JVM 底层机制的中高级开发者
- 需要阅读或解析 class 文件、编写字节码工具链的工程师
- 正在实现或改造虚拟机、解释器、编译器的研发人员
- 准备 JVM 相关技术面试、希望建立系统知识框架的求职者
不适合
- 零基础或刚学 Java 语法的入门读者,本书几乎不教编程方法
- 只想学 Spring、并发等应用框架实战、不关心底层的开发者
- 期待读到 HotSpot 等具体虚拟机调优与参数实践的人
阅读建议
- 先通读第 1、2 章建立整体架构图,再按需查阅第 4、6 章细节,不必从头线性啃完。
- 配合 javap -v 反编译自己写的类,对照第 4 章逐项核对常量池与属性表,效果最佳。
- 阅读第 2、3 章前补一点计算机体系结构基础,理解栈帧、寄存器与方法调用会更顺畅。
- 把它当工具书而非小说,遇到字节码或类加载疑问时定点查阅,并配合具体虚拟机实现源码验证。
出版社简介
机械工业出版社
中国 · 成立于 1950 年
机械工业出版社(China Machine Press)在科技与专业出版之外,库内图书还体现出对心理学、计算机、管理、财经与社科等方向的持续关注。心理学方面收入荣格作品及分析心理学导论,并涉及压力与健康、成瘾与疗愈等应用议题;计算机领域有《计算机程序的构造和解释(JavaScript版)》;管理与财经类包括《管理行为(原书第4版)》《不平等的代价(珍藏版)》《这次不一样:八百年金融危机史(纪念版)》;科学哲学与科学史方面则有《世界观(原书第3版)》。相关作者资源涵盖C.G.荣格、威廉·麦圭尔、索努·沙姆达萨尼、加博尔·马泰等。公开资料有限,以上仅据库内图书归纳其出版面貌。
常见问题
这本书和《深入理解Java虚拟机》有什么区别?
本书是 Oracle 官方规范的译本,定义「虚拟机应该是什么样」,偏标准与契约;《深入理解Java虚拟机》是周志明撰写的讲解型著作,介绍实现原理与调优实践。两者互补,规范适合查阅,讲解书适合入门通读。
Java SE 7 版现在看会不会过时?
核心内容如 class 文件结构、运行时数据区、类加载与指令集语义基本稳定,仍是理解 JVM 的可靠基础。后续版本新增的模块化、record 等特性需再读新版规范补充。
读这本书需要哪些前置知识?
至少熟悉 Java 语法与面向对象,了解基本数据类型、异常和泛型;此外建议具备汇编或计算机组成原理的初步概念,否则栈帧和指令集部分会较吃力。
为什么书里的内容和 HotSpot 实际实现不完全一致?
规范只约束对外可见的行为与接口,不规定内部实现。高性能虚拟机在对象布局、即时编译等方面已与规范描述拉开差距,属正常现象。
中文版翻译质量如何?
由周志明、薛笛、吴璞渊、冶秀刚合作翻译,经机械工业出版社正式出版,术语与国内 JVM 社区通行说法基本一致,可放心阅读原文规范对照使用。
读者评论
查询本书
本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。