注重体验与质量的电子书资源下载网站
分类于: 其它 计算机基础
简介
Java虚拟机规范(Java SE 7版) 豆 8.9分
资源最后更新于 2020-08-23 08:24:35
作者:Tim Lindholm
译者:周志明
出版社:机械工业出版社
出版日期:2014-01
ISBN:9787111445159
文件格式: pdf
标签: JVM 虚拟机 计算机 编程 程序设计 进阶 计算机科学 软件开发
简介· · · · · ·
本书整合了自1999年《Java虚拟机规范(第2版)》发布以来Java世界所出现的技术变化。另外,还修正了第2版中的许多错误,以及对目前主流Java虚拟机实现来说已经过时的内容。最后还处理了一些Java虚拟机和Java语言概念的模糊之处。
针对本书,读者有任何勘误或模糊之处,均可发邮件到jvms-comments-ww@oracle.com。
2004年发布的Java SE 5.0版为Java语言带来了翻天覆地的变化,但是对Java虚拟机设计的影响则相对较小。在Java SE 7这个版本中,我们扩充了class文件格式以便支持新的Java语言特性,譬如泛型和变长参数方法等。
2006年发布的Java SE 6.0版看起来并没有为Java语言带来什么新的变化,但是对Java虚拟机的影响就比较大。如新的字节码验证方式,它源于Eva Rose的一篇硕士论文...
目录
《java虚拟机规范(java se 7版)》
译者序
前言
第2版前言
第1版前言
第1章 引言1
1.1 简史1
1.2 java虚拟机2
1.3 各章节摘要2
1.4 说明3
第2章 java虚拟机结构4
2.1 class文件格式4
2.2 数据类型5
2.3 原始类型与值5
2.3.1 整数类型与整型值6
2.3.2 浮点类型、取值集合及浮点值6
2.3.3 returnaddress类型和值8
2.3.4 boolean类型8
2.4 引用类型与值9
2.5 运行时数据区9
.2.5.1 pc寄存器9
2.5.2 java虚拟机栈9
2.5.3 java堆10
2.5.4 方法区11
2.5.5 运行时常量池11
2.5.6 本地方法栈11
2.6 栈帧12
2.6.1 局部变量表13
2.6.2 操作数栈13
2.6.3 动态链接14
2.6.4 方法正常调用完成14
2.6.5 方法异常调用完成15
2.7 对象的表示15
2.8 浮点算法15
2.8.1 java虚拟机和ieee 754中的浮点算法15
2.8.2 浮点模式16
2.8.3 数值集合转换16
2.9 特殊方法17
2.10 异常18
2.11 字节码指令集简介20
2.11.1 数据类型与java虚拟机21
2.11.2 加载和存储指令23
2.11.3 算术指令23
2.11.4 类型转换指令24
2.11.5 对象创建与操作26
2.11.6 操作数栈管理指令26
2.11.7 控制转移指令27
2.11.8 方法调用和返回指令27
2.11.9 抛出异常28
2.11.10 同步28
2.12 类库28
2.13 公有设计,私有实现29
第3章 java虚拟机编译器30
3.1 示例的格式说明30
3.2 常量、局部变量和控制结构的使用31
3.3 算术运算35
3.4 访问运行时常量池35
3.5 更多控制结构示例36
3.6 接收参数39
3.7 方法调用39
3.8 使用类实例42
3.9 数组43
3.10 编译switch语句45
3.11 使用操作数栈46
3.12 抛出异常和处理异常47
3.13 编译finally语句块50
3.14 同步53
3.15 注解54
第4章 class文件格式55
4.1 classfile结构56
4.2 各种内部表示名称60
4.2.1 类和接口的二进制名称60
4.2.2 非全限定名60
4.3 描述符和签名61
4.3.1 语法符号61
4.3.2 字段描述符61
4.3.3 方法描述符63
4.3.4 签名63
4.4 常量池66
4.4.1 constant_class_info结构67
4.4.2 constant_fieldref_info、constant_methodref_info和constant_interface methodref_info结构67
4.4.3 constant_string_info结构69
4.4.4 constant_integer_info和constant_float_info结构69
4.4.5 constant_long_info和constant_double_info结构70
4.4.6 constant_nameandtype_info结构71
4.4.7 constant_utf8_info结构72
4.4.8 constant_methodhandle_info结构74
4.4.9 constant_methodtype_info结构74
4.4.10 constant_invokedynamic_info结构75
4.5 字段75
4.6 方法77
4.7 属性80
4.7.1 自定义和命名新的属性81
4.7.2 constantvalue属性81
4.7.3 code属性82
4.7.4 stackmaptable属性85
4.7.5 exceptions属性91
4.7.6 innerclasses属性92
4.7.7 enclosingmethod属性94
4.7.8 synthetic属性94
4.7.9 signature属性95
4.7.10 sourcefile属性96
4.7.11 sourcedebugextension属性96
4.7.12 linenumbertable属性97
4.7.13 localvariabletable属性98
4.7.14 localvariabletypetable属性99
4.7.15 deprecated属性101
4.7.16 runtimevisibleannotations属性101
4.7.17 runtimeinvisible annotations属性105
4.7.18 runtimevisibleparameter annotations属性106
4.7.19 runtimeinvisibleparameter annotations属性107
4.7.20 annotationdefault属性108
4.7.21 bootstrapmethods属性108
4.8 格式检查110
4.9 java虚拟机代码约束110
4.9.1 静态约束110
4.9.2 结构化约束113
4.10 class文件校验115
4.10.1 类型检查验证116
4.10.2 类型推导验证178
4.11 java虚拟机限制184
第5章 加载、链接与初始化186
5.1 运行时常量池186
5.2 虚拟机启动188
5.3 创建和加载188
5.3.1 使用引导类加载器来加载类型190
5.3.2 使用用户自定义类加载器来加载类型190
5.3.3 创建数组类191
5.3.4 加载限制191
5.3.5 从class文件表示得到类192
5.4 链接193
5.4.1 验证194
5.4.2 准备194
5.4.3 解析195
5.4.4 访问控制201
5.4.5 方法覆盖201
5.5 初始化202
5.6 绑定本地方法实现203
5.7 java虚拟机退出203
第6章 java虚拟机指令集204
6.1 设定:“必须”的含义204
6.2 保留操作码204
6.3 虚拟机错误205
6.4 指令描述格式205
6.5 指令集描述207
第7章 操作码助记符293
附录a limited license grant300
译者序
前言
第2版前言
第1版前言
第1章 引言1
1.1 简史1
1.2 java虚拟机2
1.3 各章节摘要2
1.4 说明3
第2章 java虚拟机结构4
2.1 class文件格式4
2.2 数据类型5
2.3 原始类型与值5
2.3.1 整数类型与整型值6
2.3.2 浮点类型、取值集合及浮点值6
2.3.3 returnaddress类型和值8
2.3.4 boolean类型8
2.4 引用类型与值9
2.5 运行时数据区9
.2.5.1 pc寄存器9
2.5.2 java虚拟机栈9
2.5.3 java堆10
2.5.4 方法区11
2.5.5 运行时常量池11
2.5.6 本地方法栈11
2.6 栈帧12
2.6.1 局部变量表13
2.6.2 操作数栈13
2.6.3 动态链接14
2.6.4 方法正常调用完成14
2.6.5 方法异常调用完成15
2.7 对象的表示15
2.8 浮点算法15
2.8.1 java虚拟机和ieee 754中的浮点算法15
2.8.2 浮点模式16
2.8.3 数值集合转换16
2.9 特殊方法17
2.10 异常18
2.11 字节码指令集简介20
2.11.1 数据类型与java虚拟机21
2.11.2 加载和存储指令23
2.11.3 算术指令23
2.11.4 类型转换指令24
2.11.5 对象创建与操作26
2.11.6 操作数栈管理指令26
2.11.7 控制转移指令27
2.11.8 方法调用和返回指令27
2.11.9 抛出异常28
2.11.10 同步28
2.12 类库28
2.13 公有设计,私有实现29
第3章 java虚拟机编译器30
3.1 示例的格式说明30
3.2 常量、局部变量和控制结构的使用31
3.3 算术运算35
3.4 访问运行时常量池35
3.5 更多控制结构示例36
3.6 接收参数39
3.7 方法调用39
3.8 使用类实例42
3.9 数组43
3.10 编译switch语句45
3.11 使用操作数栈46
3.12 抛出异常和处理异常47
3.13 编译finally语句块50
3.14 同步53
3.15 注解54
第4章 class文件格式55
4.1 classfile结构56
4.2 各种内部表示名称60
4.2.1 类和接口的二进制名称60
4.2.2 非全限定名60
4.3 描述符和签名61
4.3.1 语法符号61
4.3.2 字段描述符61
4.3.3 方法描述符63
4.3.4 签名63
4.4 常量池66
4.4.1 constant_class_info结构67
4.4.2 constant_fieldref_info、constant_methodref_info和constant_interface methodref_info结构67
4.4.3 constant_string_info结构69
4.4.4 constant_integer_info和constant_float_info结构69
4.4.5 constant_long_info和constant_double_info结构70
4.4.6 constant_nameandtype_info结构71
4.4.7 constant_utf8_info结构72
4.4.8 constant_methodhandle_info结构74
4.4.9 constant_methodtype_info结构74
4.4.10 constant_invokedynamic_info结构75
4.5 字段75
4.6 方法77
4.7 属性80
4.7.1 自定义和命名新的属性81
4.7.2 constantvalue属性81
4.7.3 code属性82
4.7.4 stackmaptable属性85
4.7.5 exceptions属性91
4.7.6 innerclasses属性92
4.7.7 enclosingmethod属性94
4.7.8 synthetic属性94
4.7.9 signature属性95
4.7.10 sourcefile属性96
4.7.11 sourcedebugextension属性96
4.7.12 linenumbertable属性97
4.7.13 localvariabletable属性98
4.7.14 localvariabletypetable属性99
4.7.15 deprecated属性101
4.7.16 runtimevisibleannotations属性101
4.7.17 runtimeinvisible annotations属性105
4.7.18 runtimevisibleparameter annotations属性106
4.7.19 runtimeinvisibleparameter annotations属性107
4.7.20 annotationdefault属性108
4.7.21 bootstrapmethods属性108
4.8 格式检查110
4.9 java虚拟机代码约束110
4.9.1 静态约束110
4.9.2 结构化约束113
4.10 class文件校验115
4.10.1 类型检查验证116
4.10.2 类型推导验证178
4.11 java虚拟机限制184
第5章 加载、链接与初始化186
5.1 运行时常量池186
5.2 虚拟机启动188
5.3 创建和加载188
5.3.1 使用引导类加载器来加载类型190
5.3.2 使用用户自定义类加载器来加载类型190
5.3.3 创建数组类191
5.3.4 加载限制191
5.3.5 从class文件表示得到类192
5.4 链接193
5.4.1 验证194
5.4.2 准备194
5.4.3 解析195
5.4.4 访问控制201
5.4.5 方法覆盖201
5.5 初始化202
5.6 绑定本地方法实现203
5.7 java虚拟机退出203
第6章 java虚拟机指令集204
6.1 设定:“必须”的含义204
6.2 保留操作码204
6.3 虚拟机错误205
6.4 指令描述格式205
6.5 指令集描述207
第7章 操作码助记符293
附录a limited license grant300