Home

Awesome

JDK源码阅读笔记

Read The Fucking Source Code  ---- RTFM

源码面前,了无秘密  ---- 侯捷

项目介绍

本项目主要整理/记录阅读JDK源码时的理解与体会,仅供参考。

项目中包含多个分支,主分支命名为master,测试分支命名为test,源码/笔记分支以JDK-XX是JDK版本)命名。

使用说明

  1. 开箱即用。将项目克隆/下载到本地,然后使用IntelliJ IDEA打开即可。

  2. 阅读源码时请切换到JDK-X分支,且不需要关联JDK

    测试源码时请切换到test分支,此时需要关联OracleJDK/OpenJDK

  3. 该源码不支持直接编译。如想完整编译整个JDK项目,请参考官方教程Building the JDK

  4. 如果源码因缺失个别依赖文件而报错,请到谷歌搜索相关的jar包导入即可。或者可在Github Issues提出反馈。

  5. 欢迎在Github Issues交流好的想法、建议、意见。

Commit图例

序号emoji在本项目中的含义简写标记
(0):tada:初始化项目:tada:
(1):memo:更新文档,包括但不限于README:memo:
(2):bulb:发布新的阅读笔记 <sub>(注1)</sub>:bulb:
(3):sparkles:增量更新阅读笔记:sparkles:
(4):recycle:重构,主要指修改已有的阅读笔记,极少情形下会修改源码 <sub>(注2)</sub>:recycle:
(5):pencil2:校对,主要指更正错别字、调整源码分组、修改源码排版等:pencil2:
(6):white_check_mark:发布测试文件:white_check_mark:

注1:

关于某个源码当前的阅读进度,请参考已阅代码清单_按功能排序

注2:涉及到修改源码的场景,包括但不限于:

修改无意义的变量名为更易懂的变量名;
补全控制语句作用域上的花括号;
重构控制语句结构(如if语句的拆分,for/while的互换);
for循环和foreach循环的转换;
拆分过长且难读的调用链,将中间过程单独摘出来;
提取频繁出现的某段操作为单个方法;
将一个文件内的多个顶级类拆分到不同的文件中(内部类不拆分);
匿名类与非匿名类的转换;
匿名类与函数表达式的转换;
函数式调用与普通调用的转换;

修改的原则是:尽量少地修改,且不改变原有的代码逻辑与运行结果(涉及到多线程的代码有些迷)
修改的目的是:增强可读性,以及便于插入笔记

相关链接

Oracle JDK

Open JDK

脚注

Commit信息中的emoji参考来源:

附录

已阅代码清单_按功能排序

已阅代码清单_按名称排序

测试文件清单