我的书籍《深入解析Java编译器:源码剖析与实例详解》就要出版了

《深入解析Java编译器》《深入剖析Java虚拟机(基础卷)》已经上市,《深入剖析Java虚拟机(运行时卷)》还未上市,不过 深入剖析Java虚拟机HotSpot 公众号已经持续更新运行时卷的相关内容了,欢迎关注!

xx

1、为什么要写这本书? 

喜欢,而且写书不仅是对自己所学知识的总结,同时也是一次分享,尤其是能与大众进行讨论,更好的提升自己。   

2、书籍介绍 

本书共有18章,详细介绍了Javac从Java源代码到Class文件编译的每个过程,由于Javac是工业级的编译器,所以代码与一些Demo编译器比起来,功能完善且对异常及错误的处理更加合理,但也导致Javac的代码量过大,细节众多,所以如果读者阅读相关源代码实现时,建议不要过分纠结每个实现细节,否则会陷入细节的汪洋大海中。本书对Javac的重点源代码进行了解读,读者可参考本书对这些重点源代码进行阅读调试即可。书的封面如下图所示:

下面简要介绍一下《深入解析Java编译器:源码剖析与实例详解》这本书的内容,如下: 

章节

描述

第1章

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

第2章

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

第3章

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

第4章

认识抽象语法树的每个树节点,这些树节点可以大概划分为定义及声明、语句与表达式

第5章

建立抽象语法树,Javac根据Token流建立一个完整的抽象语法树

第6章

介绍了符号表的结构,同时也对Javac中使用的符号及类型做了详细介绍。关于类型的常见操作在附录C中进行了介绍,对符号常见的操作在附录D中进行了介绍

第7章

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

第8章

介绍了插入式注解的具体实现过程

第9章

介绍了Java的类型转换,重点介绍了赋值转换、方法调用转换、强制类型转换及数字提升这些上下文环境下的类型转换实现

第10章

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

第11章

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

第12章

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

第13章

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

第14章

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

第15章

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

第16章

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

第17章

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

第18章

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

附录A

介绍了Java支持的命令

附录B

介绍了文法

附录C

介绍了对类型的常见操作

附录D

介绍了对符号的常见操作

附录E

介绍了虚拟机字节码指令

3、书籍面向的读者

阅读本书需要读者有一定的编程经验,建议读者最好对Java语言有一定的了解。具体而言,本书主要适合以下读者阅读:

  • 想深入了解Java语言特性的Java从业人员;
  • 想通过实践学习编译器理论的人,如高校相关专业的学生;
  • 想借鉴编译器架构的人;
  • 对大型工程的源代码感兴趣的人;

4、先读为快

由于纸书出版的延后,目前还不能在市面上购买,不过读者可以在纸质版书籍出版前先阅读电子版内容,有需要的同学可以扫描下图中的二维码直接进行购买,这个定价包括阅读电子版的权限以及本书出版后的纸质版书籍一本。

由于Javac编译器的实现细节众多,逻辑稠密,所以书中在对源代码实现进行介绍时,难免会有错误和漏洞,期望读者有更多的反馈,也希望能在华章的鲜读上与读取有更多的交流!

5、写在最后 

写完这本书,我的第一阶段目标也算完成了。接下来还要继续研究Java虚拟机Hotspot的源代码实现,期望后续会有类似这种《深入剖析HotSpot:源码剖析与实例详解》的书籍出现在市面上。总之目标只有一个,彻底搞清楚Java语言底层的实现机制。

一个人的力量总是单薄的,如果有志同道合的朋友想一起研究Javac编译器或Hotspot虚拟机,亦或是对我的书籍有什么疑问,请加我微型mazhimazh,我拉你进群,备注信息:姓名-学校或公司-研究领域。

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸠摩(马智)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值