
深入解析Java编译器:源码剖析与实例详解
作品简介
本书针对Java语言的编译器源码进行深度剖析,所以本书面向的读者主要是那些想深入研究Java语言运行原理的人。另外本书还可以用作编译原理的学习,通过强实践来达到学习的目的,所以对于想学习编译原理的人,如软件专业的学生,也是一个很好的选择。
本书共18章,5个附录,涵盖-Javac文件系统、词法分析、语法分析、符号表、语义分析、泛型、数据流、语法糖、字节码、Class文件等大量内容。由于Java编译器有10万行以上的代码,并且逻辑周密,细节众多。为了能够让读者更好的理解其中的要点,本书将会有大量的配图和实例,并且要对重点源代码展开细致的讲解。
马智,毕业于天津工业大学。在校期间所修专业为软件工程。毕业后一直从事软件开发相关工作。先后在掌游天下、京东集团任软件研发工程师。对编程语言的底层实现有浓厚的兴趣,尤其对编译原理有较为全面和深入的研究。深入研究过openJDK的源代码实现,其中包括Javac编译器的源代码实现。
作品目录
前言
第1章 Javac介绍
1.1 初识Javac
1.2 Javac源码与调试
1.3 Javac命令
第2章 Javac文件系统
2.1 文件相关实现类
2.2 文件的管理
第3章 词法分析
3.1 字符编码
3.2 获取字符输入流
3.3 Token与Name
3.4 生成Token流
第4章 语法分析之认识树节点
4.1 定义及声明
4.2 语句
4.3 表达式
4.4 生成树节点
第5章 语法分析之建立抽象语法树
5.1 定义及声明的抽象语法树
5.2 语句的抽象语法树
5.3 表达式的抽象语法树
5.4 遍历抽象语法树
第6章 符号表的组织
6.1 符号的定义
6.2 符号表的组织
6.3 类型的定义
第7章 填充符号表
7.1 依赖的处理
7.2 符号输入的第一阶段
7.3 符号输入第二阶段
第8章 插入式注解的实现
8.1 注解处理器基础
8.2 初始化注解处理器
8.3 运行注解处理器
第9章 语义分析之类型转换
9.1 类型转换的种类
9.2 赋值转换
9.3 方法调用转换
9.4 强制类型转换
9.5 数字提升
第10章 语义分析之语法检查
10.1 类型定义的检查
10.2 变量定义的检查
10.3 方法定义的检查
第11章 语义分析之引用消解
11.1 Resolve类介绍
11.2 类型引用的消解
11.3 变量引用的消解
11.4 方法引用的消解
第12章 语义分析之语法树标注
12.1 Attr类介绍
12.2 表达式相关树节点的标注
12.3 JCIdent树节点的标注
12.4 JCFieldAccess树节点的标注
第13章 泛型的实现
13.1 泛型类型
13.2 泛型方法
13.3 泛型擦除
第14章 数据流检查
14.1 Flow类介绍
14.2 if语句的分析
14.3 循环语句的分析
14.4 try语句与throw语句的分析
第15章 语法糖去除
15.1 简单语法糖
15.2 语句语法糖
15.3 枚举类语法糖
15.4 内部类语法糖
第16章 字节码指令生成
16.1 字节码指令集
16.2 生成字节码指令
16.3 Gen类介绍
16.4 可寻址实体Item
第17章 重要结构的字节码指令生成
17.1 控制转移指令与地址回填
17.2 语句的条件判断表达式
17.3 if语句
17.4 循环语句
17.5 switch语句
17.6 异常与finally语句
第18章 生成Class文件
18.1 Class文件的结构
18.2 魔数与版本
18.3 常量池
18.4 类定义的基本信息
18.5 字段集合
18.6 方法集合
18.7 类属性集合
18.8 描述符和签名
附录A Javac命令
附录B 文法
附录C 类型常见操作
附录D 符号常见操作
附录E 虚拟机字节码指令表