java的编译过程分析
环境准备
准备Hello.java文件
1 |
|
准备执行编译的代码
1 |
|
把tools.jar
加入到classpath中,(tools.jar在jdk的lib目录下)
为了查看源带
javac编译器是官方JDK中提供的前端编译器,JDK/bin目录下的javac只是一个与平台相关的调用入口,具体实现在JDK/lib目录下的tools.jar。
此外,JDK6开始提供在运行时进行前端编译,默认也是调用到javac。
javac是由Java语言编写的,而HotSpot虚拟机则是由C++语言编写;
标准JDK中并没有提供javac的源码,而在OpenJDK中的提供;
我们需要在Eclipse中调试跟踪javac源码,看整个编译过程是如何实现的。
需要在openjdk上下载,地址http://hg.openjdk.java.net/jdk8/jdk8/langtools/
下载好之后,在eclipse中设置下原代码的查找路径。
若是idea,则要多加一步,在setting>Build,Exection>Debugger>Stepping>Do not step into the class 中取消对sum包的构选。
几个关键点
词法分析
com.sun.tools.javac.parser.Lexer
接口Scanner
与JavaTokenizer
实现类- 核心函数
token()
java的编译过程分析
https://blog.fengcl.com/2021/02/28/javac-debug/