这是我参与8月更文挑战的第16天,活动详情查看:8月更文挑战
1. 前言
不要小看环境搭建这个过程,鲁xun说过,能把每一件小事都做好的运气都不会太差
1.1 为什么要读源码?
- 装杯;对公司新进来的实习生,特别是程序媛实习生,给予最大的打击,告诉 他/她,我们有多卷!
- 面试逃不掉;要么你搁这给面试官吹,要么你搁这给面试者吹。
- 学习优秀的代码、思想、模式等;假的,鉴定完毕,学习的成就感哪有装杯来的高!
- 治疗催眠;亲测有效,你睡前王者肯定不止一把;睡前源码肯定超不过两段!
1.2 为什么要给源码单独搭建阅读环境?
- 看完后,总得留下点什么
- 看完后,总得输出点什么
- 下次来,总得记得看了什么
举个例子,你就明白了:
你去洗脚,点了8号技师,那你去了洗脚城,你没留下点什么吗?你没输出点什么吗?不要想歪,对应到源码上,这是注释!这些注释一整理,就是一篇合格的文章,一篇有输出深度的文章!
8号对应的是简单的源码,那人家洗脚城不用 1234567 呢,用 UUID 编号呢,你不得记下来?这就是第三点,你下次再来,总得知道你看了什么,这对应到源码上,就是注释和 Debug 的断点
总的来说,就是搭建一个集中调试,集中看代码,集中写注释的环境
1.3 源码应该怎么读?
- 按需阅读;哪里能装点哪里
- 系统阅读;一个模块一个模块的读
- 一边调试一边读;断点是程序猿/媛的好朋友,IDE 也是
- 养成注释的好习惯;不管是写代码,还是读代码,都要养成写注释的良好习惯,怎么样才算一个好注释?我认为的标准是,其他人能看懂的、规范的注释才是合格的好注释
2. 准备阶段
你需要有:
- IntelliJ IDEA (本文使用了 IntelliJ IDEA Ultimate 2021.1.3)
- JDK源码包(本文使用了 JDK1.8 源码包在
$JAVA_HOME可以找到,在 Windows 平台上他叫src.zip) - JDK 缺失的两个类,在 3.4 小结详细说明了如何获取
3. 正式搭建环境
3.1 创建项目
首先创建一个普通的 Java 项目即可
3.2 导入源代码
首先创建对应的包结构
导入 JDK 源码
在 JDK 的安装目录中,拿到 src.zip,这就是 JDK 的源码了,我们把他解压出来,拷贝到 source 文件夹中,建议直接在磁盘拷入对应路径,直接往 IDEA 里贴容易卡死
3.3 更改 JDK 源路径
打开项目结构设置,添加一个 JDK,并把源代码的路径替换成我们存放源代码的 source 包路径,新增一个JDK的原因是为了和我们平时项目中使用的 JDK 配置分开
3.4 导入两个缺失的类
为了让 JDK 可以成功编译,需要到官网复制两个类到本地
先新建两个空的类
然后我们去官网,将对应的代码复制进去:>>> 链接
在下面的两个包中找到对应的类,拷贝到我们刚创建的空类中,什么都不需要改
3.5 导入缺少的 lib 依赖
打开项目结构设置 → 模块 → 添加 JAR 包,选择 $JAVA_HOME/lib/tools.jar
如下图
3.6 允许 IDEA 调试时进入源码
IDEA 在调试代码时,源代码是有保护的,默认不进入源代码,我们需要把这一项去掉
回到 IDEA 项目主界面,点击编译或者 Ctrl + F9,等编译完后就可以愉快的玩耍了,如果编译的过程提示内存不足,最好给编译器加点内存
看编译时的占用,将内存设到 1G 差不多了
4. 测试环境是否搭建成功
在 test 包下建立一个测试类,来测试 Debug 能否正常跳转到源码
public class Test {
public static void main(String[] args) {
HashMap<Integer, Integer> map = new HashMap<>();
map.put(1, 1);
}
}
同时在 HashMap 的 put() 方法打上断点,运行调试
成功进入源码,美滋滋,又有一个项目在磁盘吃灰
写在最后
输出才能倒逼输入,坚持看源码,写注释,输出文章;某天一回头,你会发现原来你坚持了这么久