这份资料献给对Java无尽追求的人

 

资深程序员深入剖析工业级编译器Javac的源码实现

全面讲解从Java源代码到生成Class文件的每个过程

Java是一门流行多年的高级编程语言,相关的就业岗位很多,但是最近几年却出现了用人单位招不到人,大量研发人员找不到工作的尴尬局面。究其根本原因还是岗位对技术的要求高,不但要会应用,更要懂其内部的运行原理。对于想要深入研究Java 的从业者来说,目前国内市场上还没有一本剖析Java 编译器(Javac)源码的书籍,也没有一本剖析工业级编译器源码的书籍,这正是本书要填补的市场空白。

 

本书以工业级编译器Javac的源代码为基础,详细介绍了词法分析、语法分析、语义分析及代码生成等各个阶段的具体实现,同时对重点源代码的实现进行了详细解读,让读者能真正掌握从Java源代码变为Class文件的每个过程。

本书学习路线

 

内文展示:

 

 

 

 

需要获取的小伙伴可以直接转扫码

即可获取!

第1章Javac介绍

第1章介绍了Javac的目录结构及源代码调试,同时对Javac支持的编译命令的实现进行了简单介绍。

 

第2章Javac文件系统

第2章介绍了Javac操作文件(如读取.java文件、读取JAR包)相关的类。

 

第3章词法分析

第3章介绍了Javac将读取到的Java源代码的字符流转换为Token流的过程。

 

第4章语法分析之认识树节点

第4章介绍了抽象语法树的每个树节点,这些树节点可以大概划分为定义及声明、语句与表达式。

 

第5章语法分析之建立抽象语法树

第5章介绍了如何建立抽象语法树,即Javac根据Token流建立一个完整的抽象语法树。

 

第6章符号表的组织

第6章介绍了符号表的结构,同时也对Javac中使用的符号及类型做了详细介绍。

 

第7章填充符号表

第7章进行符号表的填充,分两个阶段对抽象语法树进行扫描,然后向符号表中填充相关的符号

 

第8章插入式注解的实现

第8章介绍了插入式注解的实现内容

 

第9章语义分析之类型转换

第9章介绍了Java的类转型,重点介绍了赋值转换,方法调用转换等等

 

第10章语义分析之语法检查

第10章介绍了语法检查,主要是针对类型定义,变量定义及方法定义的合法性进行检查

 

第11章语义分析之引用消解

第11章介绍了引用消解,主要是查找表达式中所引用的唯一符号,Resolve类中提供了对类型引用、变量引用及方法引用的具体查找方法。

 

第12章语义分析之语法树标注

第12章对抽象语法树进行了类型与符号标注,重点介绍了一些重要树节点,如JCIdent和 JCFieldAccess 等的具体标注过程。

 

第13章泛型的实现

第13章介绍了泛型的实现。泛型类型或泛型方法等与泛型相关的特性完全由编译器来支持,而在后续生成Class文件的过程中需要对泛型进行擦除。

 

第14章数据流检查

第14章介绍了数据流分析,分别从变量赋值、语句活跃性及异常这3个方面对if判断语句、循环语句及 try语句等进行分析。

 

第15章语法糖去除

第15章介绍了语法糖去除,分别对简单的语法糖、语句语法糖、枚举类语法糖与内部类语法糖进行分析。

 

第16章字节码指令生成

第16章介绍了字节码指令的生成,通过简单模拟Java虚拟机运行时的情况来更好地生成字节码指令。

 

第17章重要结构的字节码指令生成

第17章介绍了重要结构的字节码指令生成,对一些常见的控制结构,如if语句、循环语句、switch语句及try语句等指令的生成过程进行了详细介绍。

 

第18章生成Class文件

第18章介绍了Class文件的生成,根据Class文件规范生成可被Java虚拟机加载运行

 

下面是本书的目录内容,需要的小伙伴可以直接扫码

即可免费获取到这本书籍!