第1章 引言 ........................................................... 18 1.1 简史 .......................................................... 18 1.2 Java虚拟机 ................................................... 18 1.3 各章节提要 ..................................................... 19 1.4 说明 .......................................................... 20 第2章 Java虚拟机结构 ................................................. 21 2.1 Class文件格式 ................................................. 21 2.2 数据类型 ...................................................... 22 2.3 原始类型与值 ................................................... 22 2.3.1 整型类型与整型值 .......................................... 23 2.3.2 浮点类型、取值集合及浮点值 .................................. 24 2.3.3 returnAddress类型和值 ................................... 26 2.3.4 boolean类型 ............................................. 26 2.4 引用类型与值 ................................................... 27 2.5 运行时数据区 ................................................... 27 2.5.1 PC寄存器 ................................................ 28 2.5.2 Java虚拟机栈 ............................................ 28 2.5.3 Java堆 ................................................. 29 2.5.4 方法区 ................................................... 29 Java 虚拟机规范 — 目录 第 9 页 / 共 387 页 2.5.5 运行时常量池 .............................................. 30 2.5.6 本地方法栈 ............................................... 30 2.6 栈帧 .......................................................... 31 2.6.1 局部变量表 ............................................... 32 2.6.2 操作数栈 ................................................. 33 2.6.3 动态链接 ................................................. 34 2.6.4 方法正常调用完成 .......................................... 34 2.6.5 方法异常调用完成 .......................................... 34 2.7 对象的表示 ..................................................... 35 2.8 浮点算法 ...................................................... 35 2.8.1 Java虚拟机和IEEE 754中的浮点算法 .......................... 35 2.8.2 浮点模式 ................................................. 36 2.8.3 数值集合转换 .............................................. 37 2.9 初始化方法的特殊命名 ............................................ 38 2.10 异常 ......................................................... 38 2.11 字节码指令集简介 ............................................... 40 2.11.1 数据类型与Java虚拟机 ..................................... 41 2.11.2 加载和存储指令 ........................................... 44 2.11.3 运算指令 ................................................ 45 2.11.4 类型转换指令 ............................................. 46 2.11.5 对象创建与操作 ........................................... 47 2.11.6 操作数栈管理指令 ......................................... 48 2.11.7 控制转移指令 ............................................. 48 2.11.8 方法调用和返回指令 ........................................ 49 2.11.9 抛出异常 ................................................ 49 2.11.10 同步 .................................................. 49 2.12 类库 ......................................................... 50 2.13 公有设计,私有实现 ............................................. 51 第3章 为JAVA虚拟机编译 ............................................... 53 Java 虚拟机规范 — 目录 第 10 页 / 共 387 页 3.1 示例的格式说明 ................................................. 53 3.2 常量、局部变量的使用和控制结构 .................................... 54 3.3 算术运算 ...................................................... 58 3.4 访问运行时常量池 ................................................ 59 3.5 更多的控制结构示例 .............................................. 61 3.6 接收参数 ...................................................... 64 3.7 方法调用 ...................................................... 64 3.8 使用类实例 ..................................................... 67 3.9 数组 .......................................................... 69 3.10 编译switch语句 ............................................... 71 3.11 使用操作数栈 .................................................. 73 3.12 抛出异常和处理异常 ............................................. 74 3.13 编译finally语句块 ............................................ 78 3.14 同步 ......................................................... 81 3.15 注解 ......................................................... 82 第4章 Class文件格式 .................................................. 84 4.1 ClassFile结构 ................................................ 85 4.2 各种内部表示名称 ................................................ 90 4.2.1 类和接口的二进制名称 ....................................... 90 4.2.2 非全限定名 ............................................... 90 4.3 描述符和签名 ................................................... 91 4.3.1 语法符号 ................................................. 91 4.3.2 字段描述符 ............................................... 92 4.3.3 方法描述符 ............................................... 93 4.3.4 签名 .................................................... 94 4.4 常量池 ........................................................ 97 4.4.1 CONSTANT_Class_info结构 ................................. 98 4.4.2 CONSTANT_Fieldref_info, CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info结构 .......................... 99 ....... 《Java虚拟机规范(Java SE 7)》是一份详细的文档,它规定了Java虚拟机(JVM)的实现细节,确保Java程序能在不同厂商提供的不同实现的虚拟机上无差别的运行。规范中包含的章节涵盖了从虚拟机的简史、结构、字节码指令集到编译原理等多个方面,为开发者提供了一个关于Java虚拟机如何操作的基础知识架构。 规范提到了Java虚拟机的历史背景和基本概念。Java虚拟机是运行Java字节码的抽象计算机,它为Java语言提供了跨平台的能力。规范中详细描述了虚拟机的内部结构,包括Class文件格式、数据类型、运行时数据区以及栈帧的组织。这些元素共同构成了JVM的运行环境。 Class文件是Java程序的编译后输出,它包含了特定的格式化信息,允许虚拟机解释执行字节码指令。Class文件格式包括常量池、类的结构信息等,这些信息被组织在特定的二进制格式中,便于虚拟机加载和处理。 数据类型在JVM中被分为原始类型和引用类型。原始类型包含各种基本数据类型的值,如整型、浮点型、返回地址等。引用类型则指向对象实例或数组。每种类型都有相应的表示方式和操作指令。 运行时数据区包括了PC寄存器、Java虚拟机栈、堆、方法区、运行时常量池和本地方法栈等,它们共同构成了JVM的内存模型。在这些区域中,数据被分配和管理,以支持程序的执行和数据的存取。 栈帧是Java方法执行时的数据结构,它包含了局部变量表、操作数栈、动态链接、方法的返回地址等信息。其中,局部变量表用于存储方法内部的局部变量,操作数栈则用于执行操作指令时的数据暂存和交换。 对象在JVM中以特定的方式表示,包括对象头、实例数据和对齐填充。对象的创建和操作通过特定的字节码指令进行控制。 浮点算法在JVM中需要遵循IEEE 754标准。这包括浮点数的表示、运算以及取值集合等概念的处理。此外,规范还涉及了方法的异常处理、字节码指令的集合以及类库的使用等。 关于编译,规范指出了Java程序是如何被转换为JVM能够执行的Class文件的。编译部分详细讨论了如何处理常量、局部变量、算术运算、控制结构、方法调用、数组和异常等。 Class文件格式一章详细说明了Class文件的结构,包括ClassFile结构、内部表示名称、描述符和签名。常量池是Class文件中一个重要的组成部分,包含了类和接口的二进制名称、字段和方法引用等信息。 规范中的内容对于理解Java虚拟机如何工作至关重要,但要对虚拟机的性能进行调优和分析,则需要更深入的资料。译者序中提到,通过阅读《Java Performance》和《Oracle JRockit: The Definitive Guide》等相关书籍,可以进一步提高对虚拟机实现细节的理解。 整个规范的翻译工作是由周志明、吴璞渊和冶秀刚三位译者合作完成的。他们分别在自己的专业领域内,对不同的章节进行了翻译和校对,确保了译文的准确性和可读性。译者们的技术背景和分工也一并进行了说明,这有助于读者更好地理解译者的工作背景和专业能力。 版权声明指出,该翻译工作完全基于个人兴趣和学术研究目的,不涉及商业行为,译文为非官方版本。译者们还提供了勘误和最新版本信息的获取方式,以促进文档的持续更新和改进。 整体来说,《Java虚拟机规范(Java SE 7)》为Java虚拟机的实现者、使用者以及优化者提供了一个清晰的指导手册,从概念模型到内存管理、从编译原理到性能分析,每一个方面都被详尽的阐述。它不仅是一份技术文档,也是深入理解Java技术体系不可或缺的参考资料。
剩余386页未读,继续阅读
评论0
最新资源