PDF文档下载地址
第一章 Java体系结构介绍 9
1.1一个对象的类可以是一下情形之一
9
1.3 java体系结构包括四大独立但相关的技术:
9
1.3.1 Java虚拟机
9
1.3.2 类装载器的体系结构
12
1.3.3 Java class文件
15
1.3.4 Java API
16
1.3.5 Java程序设计语言
17
1.4 Java体系结构的代价
17
第二章 平台无关
19
2.2 Java的体系结构对平台无关的支持
19
2.2.1 Java平台
19
2.2.2 Java语言
19
2.2.3 Java class文件
19
2.2.4 可伸缩性
19
2.3 影响平台无关的因素
19
2.3.1 Java平台的部署
19
2.3.3 本地方法
20
2.3.5 对虚拟机的依赖
20
2.4 平台无关的七个步骤
21
第三章 安全
23
3.1 为什么需要安全性
23
3.2 基本沙箱
23
3.3 类装载器体系结构
24
3.4 Class文件检验器
28
3.4.1 第一趟:class文件的结构检查
29
3.4.2 第二趟:类型数据的语义检查
29
3.3.3 第三趟:字节码验证
30
3.4.4 第四趟:符号引用的验证
32
3.4.5 二进制兼容(编译时)
34
3.5 Java虚拟机中内置的安全特性
37
3.6安全管理器和Java API
38
3.7 代码签名和认证
40
3.8 一个代码签名示例
42
3.9 策略
43
3.10 保护域
45
3.11 访问控制器
47
3.12 Java安全模型的不足和今后的发展方向
48
第四章 网络移动性
49
4.1为什么需要网络移动性
49
4.2 一种新的软件模式
49
4.3 Java体系结构对网络移动性的支持
50
4.4 动态扩展
51
4.5 Jini服务对象:网络移动对象的示例
52
第五章 Java虚拟机
53
5.2 Java虚拟机的声明周期
53
5.3 Java虚拟机的体系结构
54
5.3.1 数据类型
57
5.3.2 字长的考量
58
5.3.3 类装载器子系统
59
深入类装载器(附加,帮助理解)
62
5.3.4 方法区
87
方法区装载内容(class字节码信息)
88
5.3.5 堆
94
5.3.6 程序计数器
101
5.3.7 Java栈
101
5.3.8 栈帧
102
5.3.9 本地方法栈
108
5.3.10 执行引擎
110
5.3.11 本地方法接口
115
5.3.12 真实机器
116
第六章 Java class文件
117
6.1 Java class文件是什么
117
6.2 class文件的内容
119
6.2.1 魔数
119
6.2.2 版本号
120
6.2.3 常量池
121
6.2.4 访问标志
124
6.2.5 类索引
125
6.2.6 父类索引
125
6.2.7 interfaces_count和interfaces
126
6.2.8 fields_count和fields
126
6.2.9 method_count和methods
128
6.2.10 attributes_count和attributes
129
6.3 特殊字符串(常量池)
130
6.4 常量池
132
6.4.1 CONSTANT_Utf8_info表
132
6.4.2 CONSTANT_Integer_info表
133
6.4.3 CONSTANT_Float_info表
133
6.4.4 CONSTANT_Long_info表
133
6.4.5 CONSTANT_Double_info表
133
6.4.6 CONSTANT_Class_info表
133
6.4.7 CONSTANT_String_info表
134
6.4.8 CONSTANT_Fieldref_info表
134
6.4.9 CONSTANT_Methodref_info表
135
6.4.10 CONSTANT_InterfaceMethodref_info表
136
6.4.11 CONSTANT_NameAndType_info表
136
6.5 字段
137
6.6 方法
138
6.7 属性
140
6.7.1 属性格式
141
6.7.2 Code属性
142
6.7.3 ConstantValue属性
145
6.7.4 Deprecated属性
145
6.7.5 Exception属性
146
6.7.6 InnerClasses属性
146
6.6.7 LineNumberTable属性
147
6.6.8 LocalVariableTable属性
148
6.6.9 SourceFile属性
148
6.6.10 Synthetic属性
148
6.8 class字节码分析实例
149
6.8.1 一个解析Java Class文件的实例
149
6.8.2 class文件分析
149
第七章 类型的声明周期
150
7.1 类型装载、连接与初始化
150
7.1.1 装载
152
7.1.2 验证
153
7.1.3 准备
156
7.1.4 解析
157
7.1.5 初始化(类变量)
157
7.2 对象的声明周期
160
7.2.1 类实例化
160
Java初始化的顺序如下:
163
7.2.2 垃圾收集和对象的终结
163
7.3 卸载类型(是卸载类而非对象)
163
第八章 连接模型
166
8.1 动态连接和解析
166
8.1.1 解析和动态扩展
167
8.1.2 类装载器与双亲委派模型
172
8.1.3 常量池解析
176
8.1.4 解析CONSTANT_Class_info入口
176
8.1.5 解析CONSTANT_Fieldref_info入口
178
8.1.6 解析CONSTANT_Methodref_info入口
179
8.1.7 解析CONSTANT_InterfaceMethodref_info入口
180
8.1.8 解析CONSTANT_String_info入口
180
8.1.9 解析其他类型的入口
181
8.1.10 装载约束
181
8.1.11 编译时常量解析
182
8.1.12 直接引用
183
8.1.13 _quick指令
184
8.1.14 示例:Salutation程序的连接
185
8.1.15 示例:Geet程序的动态扩展
192
8.1.16 使用1.1版本的用户自定义类装载器
192
8.1.17 使用1.2版本的用户自定义装载器
194
8.1.18 示例:使用forName()的动态扩展
196
8.1.19 示例:卸载无法触及的greeter类
197
8.1.20 示例:类型安全性与装载约束
197
第九章 垃圾收集
198
9.1 为什么要使用垃圾收集
198
9.2 垃圾收集算法
199
9.3 引用计数收集器
200
9.4 跟踪收集器
200
9.5 压缩收集器
201
9.6 拷贝收集器
201
9.7 按代收集的收集器
202
9.8 自适应收集器
203
总结
203
9.9 火车算法
205
帮助理解的火车算法
207
9.9.3 记忆集合和流行对象
209
9.10 终结
210
9.11 对象可触及性的生命周期
211
第十章 栈和局部变量操作
217
10.1 常量入栈指令
218
10.2 局部变量值转载到栈中指令
219
10.3 将栈顶值保存到局部变量中指令
220
10.4 wide指令
222
10.5 通用(无类型)栈操作指令
223
例1
225
例2
226
例3
227
第十一章 类型转换
228
11.1类型转换指令
228
例子1
229
例子2
229
第十二章 整数运算
231
java 原码、反码、补码
231
Java中的数值数据、原码、反码、补码、数据类型及范围、字面量
232
12.1 整数运算
233
例1
235
第十三章 逻辑运算
237
逻辑运算——移位运算
237
逻辑运算——按位布尔运算
237
例1
238
第十四章 浮点运算
240
14.1 Java虚拟机支持Java语言的基本数据类型如下:
240
14.2 浮点运算
241
第十五章 对象和数组
243
15.1 关于对象和数组的回顾
243
15.2 对象操作指令
243
15.3 数组操作指令
244
例1
247
第十六章 控制流
249
16.1 控制流指令——条件跳转指令
249
16.2 控制流指令——比较指令
250
16.3 对象引用之间与null之间的比较
251
16.4 控制流指令——无条件跳转指令
251
16.5 控制流指令——表跳转指令(专门为switch设计)
252
例1
253
第十七章 异常
255
控制流指令——异常和finally
255
例1
255
第十八章 finally子句
257
18.1 微型子例程
257
18.2 不对称的调用和返回
258
例1
259
第十九章 方法的调用与返回
261
19.1 方法调用
261
方法调用指令
261
19.2 方法调用的其他形式
262
19.3 指令invokespecial
262
19.3.1 指令invokespecial和<init>()方法
262
19.3.2 指令invokespecial和私有方法。
265
19.3.3 指令invokespecial和私有方法。
267
19.4 指令invokeinterface
269
19.7 方法返回指令
269
第二十章 线程同步
270
线程同步指令
270
推荐文章
271