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

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

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

献给Java无尽追求者,Java大神级程序员修炼之道。

内容简介

Java是一门流行多年的高级编程语言,相关的就业岗位很多,但是最近几年却出现了用人单位招不到人,大量研发人员找不到工作的尴尬局面。根本原因还是岗位对技术的要求高,不但要会应用,更要懂其内部的运行原理。

对于想要深入研究Java的从业者来说,目前国内市场上还没有一本剖析Java编译器(Javac)源码的书籍,也没有一本剖析工业级编译器源码的书籍,这正是本书要填补的市场空白。

本书围绕市面上的主流编译器Javac进行源代码剖析,详细介绍了词法分析、语法分析、语义分析及代码生成等各个阶段的具体实现。另外,本书有大量的配图和实例,以便读者能更好地理解书中的要点。

作者简介

作者马智,毕业于天津工业大学。在校期间所修专业为软件工程。毕业后一直从事软件开发相关工作。先后在掌游天下、京东集团任软件研发工程师。对编程语言的底层实现有浓厚的兴趣,尤其对编译原理有较为全面和深入的研究。深入研究过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 类型常见操作

C.1 supertype()方法

C.2 interfaces()方法

C.3 asSuper()方法

C.4 asOuterSuper()方法

C.5 isSameType()方法

C.6 L()与U()方法

C.7 lowerBound()与upperBound()方法

C.8 containsType()方法

C.9 hasSameArgs()方法

C.10 subst()方法

C.11 memberType()方法

C.12 erasure()与erasureRecursive()方法

附录D 符号常见操作

D.1 isInheritedIn()方法

D.2 hiddenIn()方法

D.3 isMemberOf()方法

D.4 overrides()方法

D.5 implementation()方法

附录E 虚拟机字节码指令表

E.1 加载与存储指令

E.2 运算指令

E.3 类型转换指令

E.4 对象操作指令

E.5 操作数栈管理指令

E.6 控制转移指令

E.7 方法调用和返回指令

E.8 异常抛出指令

E.9 同步指令

深入解析Java编译器:源码剖析与实例详解是2020年由机械工业出版社华章分社出版,作者马智。

得书感谢您对《深入解析Java编译器:源码剖析与实例详解》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Java Web基础与实例教程 电子书
本书共15章,内容涵盖了JavaWeb开发基础知识、Servlet接收GET请求数据、Servlet接收POST请求数据、Servlet生成HTTP响应数据、异步请求和异步响应、会话控制技术——Cookie与Session、过滤器和监听器、MVC和JSTL、个人笔记系统的数据库设计及实现、MySQL事务机制和JDBC的使用、layui和CKEditor的使用,以及个人笔记系统首页模块的设计与实现、
深入理解Java模块系统 电子书
本书从Java模块系统的设计动机和基本概念讲起,一直延伸至其高级特性,介绍了模块系统的基本机制,以及如何创建、构建和运行模块化应用程序。主要内容包括:从源代码到JAR来构建模块、迁移到模块化Java、解耦依赖以及改进API、处理反射和版本、自定义运行时镜像等。
素描实例绘制详解 电子书
本书是“素描实例绘制详解”系列中的一本,通过一个个案例详细地分析构图、明暗关系、深入塑造以及整体调整各阶段需要掌握的绘画知识。通过实例将绘画中所遇到的难题一一解决,使读者在实例的学习中提升自己的绘画技能。本书是一本综合题材的绘画教程书,书中包括石膏、静物、动物、人物的绘制,所涉及的绘画题材丰富,案例详细多样。帮助读者从最基础的了解工具开始学习透视与形体、光源与色调。读者通过这本书可以快速地学习到各
深入解析Android 5.0系统 电子书
本书详细剖析了最新Android5.0系统框架的原理和具体实现。本书共24章,覆盖了Android5.0系统中重要的模块,对于每个模块都详细介绍了它们的架构、原理及代码实现等各个方面,尽量让读者知其然,又知其所以然,达到学以致用的目的。本书主要内容为AndroidBuild系统核心、Android的Bionic、系统调用的实现、Binder应用层的核心类、JNI、同步和消息机制、进程间的消息传递、
Spring源码深度解析(第2版) 电子书
一本实践与理论并重、广度与深度兼顾的Spring源码开发指南。