作品简介

本书针对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 虚拟机字节码指令表
展开全部