⾃⼰动⼿写java虚拟机pdf_⾃⼰动⼿写java虚拟机
⾃⼰动⼿写java虚拟机是⼀本以实战模式描述JVM原理的书,由资深Java服务器开发⼯程师张秀宏编著,本书对JVM进⾏了⼤量研究,在书中深⼊浅出地分析了class⽂件的数据结构和JVM的基本原理,并使⽤Go语⾔⽤不到1万⾏的程序代码就实现了JVM的基本模型,是Java 爱好者了解JVM实现原理的⼀本好书。实战才是最有效的掌握知识的⼿段,快快动⼿,实现属于⾃⼰的Java虚拟机吧!
内容介绍《⾃⼰动⼿写java虚拟机》是继深⼊理解Java虚拟机之后的⼜⼀经典著作,它⼀⽅⾯遵循Java虚拟机规范,⼀⽅⾯⼜独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,⽽且能让你对Java虚拟机的原理认识更深⼊和更深刻!
全书书摒弃了传统的以解读枯燥的Java虚拟机规范⽂档和分析繁琐的Java虚拟机源代码的⽅式来讲解Java虚拟机,取⽽代之的是,以实践的⽅式,引导读者如何从零开始构建和实现⼀个Java虚拟机,整个过程不仅能让读者做到对Java虚拟机知其然⽽且知其所以然,还能屏蔽⼤量不必要的繁琐细节,体会到实现过程中的成就感,让学习过程更加轻松、愉悦和⾼效。更重要的是,这种⽅式能引导读者更深⼊地认识和掌握Java虚拟机的⼯作原理。
本书主要内容全书⼀共分为11章,各章内容安排如下:
第1章:安装开发环境,讨论java命令,并编写⼀个类似Java的命令⾏程序。
第2章:讨论Java虚拟机如何搜索class⽂件,实现类路径。
第3章:讨论class⽂件结构,实现class⽂件解析。
第4章:讨论运⾏时数据区,实现线程私有的运⾏时数据区,包括线程、Java虚拟机栈、栈帧、操作数栈和局部变量表等。
第5章:讨论Java虚拟机指令集和解释器,实现解释器和150余条指令。
第6章:讨论类、对象以及线程共享的运⾏时数据区,实现类加载器、⽅法区以及部分引⽤类指令。
第7章:讨论⽅法调⽤和返回,实现⽅法调⽤和返回指令。
第8章:讨论数组和字符串,实现数组相关指令和字符串池。
第9章:讨论本地⽅法调⽤,实现Object.hashCode()等本地⽅法。
第10章:讨论异常处理机制,实现athrow指令。
第11章:讨论System类的初始化过程和System.out.println()的⼯作原理等,并对全书进⾏总结。
go语言开发环境搭建
⾃⼰动⼿写java虚拟机章节⽬录前⾔第1章 命令⾏⼯具 1
1.1 准备⼯作 1
1.2 java命令 4
1.3 编写命令⾏⼯具 5
1.4 测试本章代码 7
1.5 本章⼩结 8
第2章 搜索class⽂件 9
2.1 类路径 9
2.2 准备⼯作 10
2.3 实现类路径 11
2.4 测试本章代码 20
2.5 本章⼩结 21
第3章 解析class⽂件 23
3.1 class⽂件 24
3.2 解析class⽂件 25
3.3 解析常量池 35
3.4 解析属性表 50
3.5 测试本章代码 61
3.6 本章⼩结 63
第4章 运⾏时数据区 65
4.1 运⾏时数据区概述 66
4.2 数据类型 67
4.3 实现运⾏时数据区 68
4.4 测试本章代码 81
4.5 本章⼩结 83
第5章 指令集和解释器 85
5.1 字节码和指令集 86
5.2 指令和指令解码 88
5.2.1 Instruction接⼝ 89
5.2.2 BytecodeReader 91 5.3 常量指令 92
5.3.1 nop指令 92
5.3.2 const系列指令 93
5.3.3 bipush和sipush指令 94 5.4 加载指令 94
5.5 存储指令 95
5.6 栈指令 96
5.6.1 pop和pop2指令 96
5.6.2 dup指令 97
5.6.3 swap指令 98
5.7 数学指令 98
5.7.1 算术指令 98
5.7.2 位移指令 99
5.7.3 布尔运算指令 101
5.7.4 iinc指令 102
5.8 类型转换指令 102
5.9 ⽐较指令 103
5.10 控制指令 108
5.11 扩展指令 111
5.12 解释器 114
5.13 测试本章代码 118
5.14 本章⼩结 120
第6章 类和对象 121
6.1 ⽅法区 122
6.2 运⾏时常量池 127
6.3 类加载器 133
6.4 对象、实例变量和类变量 136
6.5 类和字段符号引⽤解析 141
6.6 类和对象相关指令 144
6.7 测试本章代码 156
6.8 本章⼩结 160
第7章 ⽅法调⽤和返回 161
7.1 ⽅法调⽤概述 161
7.2 解析⽅法符号引⽤ 163
7.3 ⽅法调⽤和参数传递 166
7.4 返回指令 169
7.5 ⽅法调⽤指令 170
7.6 改进解释器 176
7.7 测试⽅法调⽤ 178
7.8 类初始化 181
7.9 本章⼩结 185
第8章 数组和字符串 187
8.1 数组概述 187
8.2 数组实现 188
8.3 数组相关指令 191
8.4 测试数组 203
8.5 字符串 204
8.6 测试字符串 207
8.7 本章⼩结 210
第9章 本地⽅法调⽤ 211
9.1 注册和查本地⽅法 212
9.2 调⽤本地⽅法 213
9.3 反射 215
9.4 字符串拼接和String.intern()⽅法 225
9.5 Object.hashCode()、equals()和toString() 231 9.6 Object.clone() 233
9.7 ⾃动装箱和拆箱 235
9.8 本章⼩结 238
第10章 异常处理 239
10.1 异常处理概述 239
10.2 异常抛出 240
10.3 异常处理表 241
10.4 实现athrow指令 245
10.5 Java虚拟机栈信息 248
10.6 测试本章代码 251
10.7 本章⼩结 252
第11章 结束 253
11.1 System类是如何被初始化的 253
11.2 初始化System类 255
11.3 System.out.println()是如何⼯作的 258 11.4 测试本章代码 260
11.5 总结 260
附录 指令表 263
使⽤说明1、下载并解压,得出pdf⽂件
2、如果打不开本⽂件,请务必下载pdf阅读器
3、安装后,在打开解压得出的pdf⽂件
4、双击进⾏阅读