深入解析Java编译器:The Hacker's Guide to Javac
"Java编译器黑客指南-Javac1解读" 本文档是关于黑客如何深入理解和操作Java编译器——Javac的入门教程。由David Erni和Adrian Kuhn于2008年3月在伯尔尼大学发布。主要介绍了Javac的内部结构、工作阶段,并通过两个示例进行讲解,一个是简单的"Hello World"程序,另一个是抽象语法树(AST)重写插件。 1. 引言 随着Java 6的发布,Javac编译器成为开源项目,隶属于OpenJDK项目,可以从http://www.openjdk.org(groups/compiler/)下载。不过,这个教程中的例子并不需要重新编译编译器,而是扩展其功能。教程所用的任何Java 6安装版本都适用。 2. Java编译器简介 Javac编译器的内部由多个部分和阶段组成。首先,它通过解析(parse)读取*.java源文件,将源代码转化为一系列的标记。接着,编译器会执行一系列的中间步骤,如词法分析、语法分析、语义分析等,最终生成字节码。 3. JSR269:编译器插件机制 教程中的第一个示例展示了如何使用Javac的新特性——JSR269插件机制。JSR269允许开发者编写插件来扩展编译器的行为,例如在编译过程中添加自定义检查或处理。 4. AST重写示例 第二个示例更进一步,超越了JSR269的基本功能。通过类型转换将JSR269对象映射到编译器内部接口,实现了对抽象语法树(AST)的重写。具体来说,这个示例会将所有的断言(assert)语句替换为if-throw表达式,这是一种更显式的错误处理方式。 总结: 《Java编译器黑客指南》详细介绍了Javac的内部工作原理,并通过实际的编程示例让读者能够掌握如何利用Javac的开源特性进行扩展。它不仅介绍了编译器的基本工作流程,还展示了如何利用JSR269插件机制进行编译时的自定义操作,特别是对AST的修改能力,这对于理解Java编译过程和进行源代码级别的优化具有极大的价值。通过学习本文档,开发者可以更深入地理解Java的编译过程,并有能力定制自己的编译行为。
![](https://csdnimg.cn/release/download_crawler_static/86291824/bg4.jpg)
剩余17页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/ba0248c4196f4601865d2abd5374875b_weixin_35783593.jpg!1)
- 粉丝: 35
- 资源: 324
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Lombok 快速入门与注解详解
- SpringSecurity实战:声明式安全控制框架解析
- XML基础教程:从数据传输到存储解析
- Matlab实现图像空间平移与镜像变换示例
- Python流程控制与运算符详解
- Python基础:类型转换与循环语句
- 辰科CD-6024-4控制器说明书:LED亮度调节与触发功能解析
- AE particular插件全面解析:英汉对照与关键参数
- Shell脚本实践:创建tar包、字符串累加与简易运算器
- TMS320F28335:浮点处理器与ADC详解
- 互联网基础与结构解析:从ARPANET到多层次ISP
- Redhat系统中构建与Windows共享的Samba服务器实战
- microPython编程指南:从入门到实践
- 数据结构实验:顺序构建并遍历链表
- NVIDIA TX2系统安装与恢复指南
- C语言实现贪吃蛇游戏基础代码
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)