深入解析Java编译器:源码剖析与实例详解
基本信息

【插图】

编辑推荐
广告语:
资深程序员深入剖析工业级编译器Javac的源码实现,全面讲解从Java源代码到生成Class文件的每个过程。掌游天下姚宝栓蚂、蚁金服陈峰、京东数科王帅力荐!用大量图示和实例带领读者真正掌握Java编译器的具体实现
内容简介
目录
第1章 Javac介绍 1
1.1 初识Javac 1
1.2 Javac源码与调试 4
1.3 Javac命令 7
第2章 Javac文件系统 12
2.1 文件相关实现类 12
2.2 文件的管理 25
2.2.1 获取JavacFileManager对象 25
2.2.2 StandardLocation类 28
2.2.3 JavacFileManager类 31
第3章 词法分析 38
3.1 字符编码 38
3.2 获取字符输入流 40
3.3 Token与Name 43
3.3.1 Token介绍 44
3.3.2 Name对象的生成与存储 47
3.3.3 Name映射为Token 51
3.4 生成Token流 52
第4章 语法分析之认识树节点 67
前言
Java是一门流行多年的高级编程语言,相关的就业岗位很多,但是最近几年却出现了用人单位招不到人,大量研发人员找不到工作的尴尬局面。究其根本原因还是岗位对技术的要求高,不但要会应用,更要懂其内部的运行原理。对于想要深入研究Java的从业者来说,目前国内市场上还没有一本剖析Java编译器(Javac)源码的书籍,也没有一本剖析工业级编译器源码的书籍,这正是本书要填补的市场空白。
本书围绕市面上的主流编译器Javac进行源代码剖析,详细介绍了词法分析、语法分析、语义分析及代码生成等各个阶段的具体实现。另外,本书有大量的配图和实例,以便读者能更好地理解书中的要点。
本书有何特色
1.内容丰富,讲解详细
本书对Java编译器的词法分析、语法分析、语义分析及代码生成等各个阶段的源代码实现做了详细介绍,可以帮助读者系统地掌握Java编译器的实现原理。
2.原理分析与实例并重
本书对Java编译器各个编译阶段的源代码实现都进行了重点介绍,同时也简单介绍了一些编译器的基本原理,并给出了大量的配图和实例,能让读者真正掌握Java编译器的具体实现。
3.分析工业级编译器的源码实现
本书分析的编译器Javac是一个工业级的编译器,它是大部分Java开发人员将Java源代码转换为Class文件的首选编译器。对于Java从业人员来说,本书可以让他们学习到Javac是如何支持Java语言的相关特性的,如泛型;而对于那些对编译器感兴趣的人来说,本书则可以让他们真正学习到如何将编译器的相关理论知识应用到开发实践中。
本书内容
本书深入剖析了Javac的源代码实现,每一章都会对重点的源代码实现进行解读。各章的内容简单介绍如下:
第1章介绍了Javac的目录结构及源代码调试,同时对Javac支持的编译命令的实现进行了简单介绍。
第2章介绍了Javac操作文件(如读取.java文件、读取JAR包)相关的类。
第3章介绍了Javac将读取到的Java源代码的字符流转换为Token流的过程。
第4章介绍了抽象语法树的每个树节点,这些树节点可以大概划分为定义及声明、语句与表达式。
第5章介绍了如何建立抽象语法树,即Javac根据Token流建立一个完整的抽象语法树。
第6章介绍了符号表的结构,同时也对Javac中使用的符号及类型做了详细介绍。
第7章进行符号表的填充,分两个阶段对抽象语法树进行扫描,然后向符号表中填充相关的符号。
第8章介绍了插入式注解的具体实现过程。
媒体评论
在日常的程序开发中,开发人员可能很少思考Javac编译器是如何运行的,以及如何对代码进行优化。本书从编译器源码剖析的角度,详细介绍了Javac如何实现编译,以及如何结合Java的特性而实现编译优化等相关内容,从而让开发者能更好地掌控Java这个“神兽”,编写出更加利于编译器优化的高性能代码。
——掌游天下玉米广告部门经理姚宝栓
马智用他的专业知识和丰富的开发经验,深入剖析了工业级编译器Javac的源码实现过程。对于任何一个使用Java语言做开发的人来说,本书可以帮助他们更加深入地理解Javac编译器,从而提高开发水平,提升职场竞争力。
——蚂蚁金服工程师陈峰
本书将Java语言复杂的底层编译逻辑用简单明了的语言和生动的图示进行讲解,读后给人一种“大彻大悟”的感觉,推荐给那些想要透彻理解Java语言的人阅读。
——京东数科高级工程师王帅
编辑推荐:
资深程序员深入剖析工业级编译器Javac的源码实现
全面讲解从Java源代码到生成Class文件的每个过程
对Java编译器各编译阶段的源代码实现进行了详细介绍
用大量图示和实例带领读者真正掌握Java编译器的具体实现
帮助读者深入理解Javac如何支持Java语言的诸多特性
让读者能真正理解如何将编译器的相关理论知识应用到开发实践中
本书核心内容:
Javac介绍
Javac文件系统
词法分析
语法分析之认识树节点
语法分析之建立抽象语法树