Need help with LearningJDK?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

kangjianwei
736 Stars 361 Forks 1.2K Commits 2 Opened issues

Description

JDK源码阅读笔记

Services available

!
?

Need anything else?

Contributors list

No Data

JDK源码阅读笔记

Read The Fucking Source Code  ---- RTFM

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

项目介绍

本项目主要整理/记录阅读

JDK
源码时的理解与体会,仅供参考。

项目中包含多个分支,主分支命名为

master
,测试分支命名为
test
,源码/笔记分支以
JDK-X
X是JDK版本)命名。
  • master
    分支不定期汇总源码笔记与测试代码的快照。
  • JDK-X
    分支存放
    JDK
    源码笔记。阅读过程中产生的笔记以注释的形式直接写在源码文件中。
  • test
    分支存放辅助理解的测试代码,可直接运行。
    • 注1:建议在
      OracleJDK
      /
      OpenJDK
      11的环境下运行测试文件
    • 注2:不会为所有类/接口都写测试文件,有的是因为太简单,有的是因为已写过大量类似的,还有的是因为理解不到位

使用说明

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

    IntelliJ IDEA
    打开即可。
  2. 阅读源码时请切换到

    JDK-X
    分支,且不需要关联
    JDK

测试源码时请切换到

test
分支,此时需要关联
OracleJDK
/
OpenJDK
  1. 该源码不支持直接编译。如想完整编译整个

    JDK
    项目,请参考官方教程Building the JDK
  2. 如果源码因缺失个别依赖文件而报错,请到谷歌搜索相关的jar包导入即可。或者可在Github Issues提出反馈。

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

Commit图例

| 序号 | emoji | 在本项目中的含义 | 简写标记 | | ---- | ------------------ | ------------------------------------------------------------------- | -------------------- | | (0) | :tada: | 初始化项目 |

:tada:
| | (1) | :memo: | 更新文档,包括但不限于README |
:memo:
| | (2) | :bulb: | 发布新的阅读笔记 (注1) |
:bulb:
| | (3) | :sparkles: | 增量更新阅读笔记 |
:sparkles:
| | (4) | :recycle: | 重构,主要指修改已有的阅读笔记,极少情形下会修改源码 (注2) |
:recycle:
| | (5) | :pencil2: | 校对,主要指更正错别字、调整源码分组、修改源码排版等 |
:pencil2:
| | (6) | :whitecheckmark: | 发布测试文件 |
:white_check_mark:
|

注1:

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

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

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

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

相关链接

Oracle JDK

Open JDK

脚注

Commit信息中的

emoji
参考来源:

附录

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

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

测试文件清单

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.