《Java虚拟机规范 Java SE 第7版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)林德霍尔姆等著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2014
  • ISBN:9787111445159
  • 页数:303 页
图书介绍:本书共7章,第1章从宏观的角度介绍了Java虚拟机与Java的关系与发展历程。第2章概览了Java虚拟机整体架构,包括class文件格式、数据类型、原始类型、引用类型、运行时数据区、栈帧、浮点算法、异常等,这对理解本书后面内容有重要帮助。第3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局部变量、控制结构、算术运算、参数接收、方法调用、数组、操作数栈异常处理、同步与注解等。第4章深入分析了用来表示编译后的类和接口的class文件格式,主要包括ClassFile结构、描述符与签名、常量池、字段、方法、属性、代码约束与class文件校验等。第5章定义了Java虚拟机启动以及类和接口的加载、链接接和初始化过程。第6章阐释并列举了Java虚拟机指令集。第7章提供了一张以操作码值为索引的Java虚拟机操作码助记符表。

第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 C1assFile结构 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 CONSTAN_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_NameAnd Type_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_Invoke Dynamic_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 Grant 300