Read The Fucking Source Code ---- RTFM
源码面前,了无秘密 ---- 侯捷
OpenJDK-11
源码,主要用来记录阅读源码的笔记与体会,可供阅读学习使用。
src
目录存放OpenJDK-11源码。阅读过程中产生的笔记以注释的形式直接写在源码文件中。test
目录存放源码阅读过程中写的一些测试文件,使用时可将相关文件复制到新建项目中。
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
-
该源码主要除了包括
src.zip
里提供的源码,此外还包括一部分未公开的源码。该源码不支持直接编译。如想完整编译整个
OpenJDK
项目,请自行到OpenJDK
项目官网下载完整的工具链。 -
此源码与
Oracle JDK
源码并非完全一致。Oracle JDK
仅开源了一部分代码。想深入学习JDK的话建议阅读此源码。 -
源码原本采用了
JDK 9
之后的module
模块系统组织,此处修改为熟悉的包组织形式,以便阅读。 -
因为本源码已经包含了
OpenJDK
中绝大多数公开的源码,所以不建议再为此项目重复关联JDK。 -
个别源码在IDE中打开后可能会显示[错误]信息,这一般是因为某个源文件异常或缺失而导致的。对此,解决方案有两个:
- 如果缺失部分影响到其他方法的理解,请自行到Google搜索相关源文件放到项目中合适的位置,或作为依赖库关联到项目中,比如部分源码需要关联Junit4测试库。
- 如果仅仅是因为显示的异常信息造成了视觉上的干扰,请在IDE中自行关闭或切换[错误]信息的显示方式即可。
- 极少情况下,是因为代码本身的语法问题,这时需要进行修正。
-
欢迎在Issues反馈好的想法、建议、意见。
序号 | emoji | 在本项目中的含义 |
---|---|---|
(0) | 🎉 | 初始化项目 |
(1) | 📝 | 更新文档,包括但不限于README、.gitignore |
(2) | 💡 | 发布新的阅读笔记 (注1) |
(3) | ✨ | 记录新特性 |
(4) | ♻️ | 重构代码,主要是修改之前的阅读笔记,极少情形下会修改源码 (注2) |
(5) | ✏️ | 更正错别字、调节不合理的分组、修改源码排版、目录结构等 |
(6) | ✅ | 发布测试文件 |
注1:
使用标记 💡 统一替换旧标记 💡|💡🤡|🚧✨|🚧💬
关于某个源码当前的阅读完成度,参见已阅代码清单_按功能排序注2:涉及到修改源码的场景,包括但不限于:
修改无意义的形参名为更易懂的形参名;
修改控制语句结构或在控制语句作用域上添加花括号;
修改匿名类为非匿名类;
拆分过长且难读的调用链,将中间过程单独摘出来;
提取频繁出现的某段操作为单个方法;
将一个文件内的多个类拆分到不同的文件中(内部类不拆分);
函数式调用与普通调用的转换;
for循环和foreach循环的转换;修改的原则是:修改量极少,且不改变原有的逻辑与结果
修改的目的是:仅为增强可读性
Commit信息中的emoji参考来源: