欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何查看Javac源码

程序员文章站 2022-05-23 10:20:52
...

序言

讲Javac之前我想和大家聊一聊Java到底是个什么东西,这个全世界最流行的语言,它所构成的基础是什么?其实对于Java整个技术体系来说,所做的事无非是这几步,将Java文件转为class文件,再将class文件放入jvm中执行,虽然限制于平台,编译器,虚拟机的实现,相同的代码,最终生成的class文件,执行的流程可能完全不同,但是整个流程基本上是相似的。

我在之前的文章曾经详细的讲述了class文件是如何被jvm虚拟机所识别,检验,最终执行,但是对于class文件是如何生成的,也就是我们刚刚接触Java时所输入的Javac指令到底做了什么工作,我觉得还是有必要和大家分享一下。

因为Javac属于较为偏门的知识,网上的博客都写的很烂,基本上十篇会有九篇是其他博客拼接起来的,甚至有些连拼接都不愿意,直接复制黏贴,网上对于怎么看Javac教程基本上流程如下,首先,编译一个属于自己的jdk,然后把Javac对应的文件放入一个新建的Java工程项目中,其中的坑有多大,实际执行起来有多麻烦我就不多说了,我想说的是,其实如果仅仅只是需要查看,Javac的源码,根本无需如此大动干戈。

首先,我们需要搞清楚Javac命令的本质是什么,稍有计算机常识的人都都知道,在win平台下,这个指令等同于运行Javac.exe,让我们找到Javac
如何查看Javac源码
很显然,这么小的文件肯定不足以完成将Java转换为class的工作,我们将其拖出来,运行
如何查看Javac源码
添加相应的库文件
如何查看Javac源码
还原jdk中的路径位置,依次排查,最终确定javac.exe最终调用lib/tools.jar,使用脚本反复执行Javac.exe,
如何查看Javac源码
如何查看Javac源码
确认最终调用Java执行,即,使用tools.jar,查看tools.jar
如何查看Javac源码
tools.jar\sun\tools\javac中发现Javac对应的文件,将tools.jar放至idea中,由于src中并没有关于tools中的内容,这部分内容被放置在openjdk源码中
如何查看Javac源码
点击下载zip,导入tools.jar和源码到idea
如何查看Javac源码
随意点击一个文件
如何查看Javac源码
成功查看源码

注意 ,本教程只限于jdk8,8之后的jdk版本把tools移除了,Javac中的源代码可以在src.zip\jdk.compiler\com\sun\tools\javac中找到,

如何查看Javac源码
不过无论是jdk8还是jdk8以上,均可以使用

import com.sun.tools.javac.Main;

public class Test{
    public static void main(String[] args) throws Exception {
        Main m=new Main();
        m.main(args);
    }
}

执行javac,区别是jdk8之前需要导入tools.jar和对于的源文件,8之后只需要导入src.zip即可,执行效果

如何查看Javac源码