如何查看Javac源码
序言
讲Javac之前我想和大家聊一聊Java到底是个什么东西,这个全世界最流行的语言,它所构成的基础是什么?其实对于Java整个技术体系来说,所做的事无非是这几步,将Java文件转为class文件,再将class文件放入jvm中执行,虽然限制于平台,编译器,虚拟机的实现,相同的代码,最终生成的class文件,执行的流程可能完全不同,但是整个流程基本上是相似的。
我在之前的文章曾经详细的讲述了class文件是如何被jvm虚拟机所识别,检验,最终执行,但是对于class文件是如何生成的,也就是我们刚刚接触Java时所输入的Javac指令到底做了什么工作,我觉得还是有必要和大家分享一下。
因为Javac属于较为偏门的知识,网上的博客都写的很烂,基本上十篇会有九篇是其他博客拼接起来的,甚至有些连拼接都不愿意,直接复制黏贴,网上对于怎么看Javac教程基本上流程如下,首先,编译一个属于自己的jdk,然后把Javac对应的文件放入一个新建的Java工程项目中,其中的坑有多大,实际执行起来有多麻烦我就不多说了,我想说的是,其实如果仅仅只是需要查看,Javac的源码,根本无需如此大动干戈。
首先,我们需要搞清楚Javac命令的本质是什么,稍有计算机常识的人都都知道,在win平台下,这个指令等同于运行Javac.exe,让我们找到Javac
很显然,这么小的文件肯定不足以完成将Java转换为class的工作,我们将其拖出来,运行
添加相应的库文件
还原jdk中的路径位置,依次排查,最终确定javac.exe最终调用lib/tools.jar,使用脚本反复执行Javac.exe,
确认最终调用Java执行,即,使用tools.jar,查看tools.jar
tools.jar\sun\tools\javac中发现Javac对应的文件,将tools.jar放至idea中,由于src中并没有关于tools中的内容,这部分内容被放置在openjdk源码中
点击下载zip,导入tools.jar和源码到idea
随意点击一个文件
成功查看源码
注意 ,本教程只限于jdk8,8之后的jdk版本把tools移除了,Javac中的源代码可以在src.zip\jdk.compiler\com\sun\tools\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即可,执行效果
推荐阅读
-
Win10已激活密钥如何查看?Win10查看已激活密钥教程
-
SpringBoot 源码解析 (七)----- Spring Boot的核心能力 - SpringBoot如何实现SpringMvc的?
-
TGP如何查看他人的符文天赋?教你查看别人的符文天赋
-
电脑时时刻刻都在记录你的操作 如何查看电脑各种使用记录?
-
如何查看一个js,ts文件模块的依赖树-深予之-SegmentFault思否
-
详解Linux如何查看当前占用CPU或内存最多的几个进程
-
关于JDK源码:我想聊聊如何更高效地阅读
-
新浪微博如何查看个人主页访客次数/访客性别
-
怎么查看IE版本 2招教你如何查看浏览器版本
-
在Linux系统中如何查看和关闭SELinux