Read The Fucking Source Code ---- RTFM
源碼面前,了無秘密---- 侯捷
本項目主要整理/記錄閱讀JDK
原始碼時的理解與體會,僅供參考。
專案包含多個分支,主分支命名為master
,測試分支命名為test
,原始碼/筆記分支以JDK-X
( X是JDK版本)命名。
master
分支不定期匯總原始碼筆記與測試程式碼的快照。
JDK-X
分支存放JDK
的原始碼與筆記。閱讀過程中產生的筆記以註釋的形式直接寫在原始碼檔案中。
test
分支存放輔助理解的測試程式碼,可直接運作。
OracleJDK
/ OpenJDK
11的環境下執行測試文件開箱即用。將專案克隆/下載到本地,然後使用IntelliJ IDEA
開啟即可。
閱讀原始碼時請切換到JDK-X
分支,且不需要關聯JDK
。
測試原始碼時請切換到test
分支,此時需要關聯OracleJDK
/ OpenJDK
。
此原始碼不支援直接編譯。如想完整編譯整個JDK
項目,請參考官方教學Building the JDK。
如果原始碼因缺少個別依賴文件而報錯,請到Google搜尋相關的jar包導入即可。或可在Github Issues提出回饋。
歡迎在Github Issues交流好的想法、建議、意見。
序號 | emoji | 在本項目中的意義 | 簡寫標記 |
---|---|---|---|
(0) | ? | 初始化專案 | :tada: |
(1) | 更新文檔,包括但不限於README | :memo: | |
(2) | 發布新的閱讀筆記(註1) | :bulb: | |
(3) | 增量更新閱讀筆記 | :sparkles: | |
(4) | ♻️ | 重構,主要指修改現有的閱讀筆記,極少情況下會修改源碼(註2) | :recycle: |
(5) | ✏️ | 校對,主要指更正錯字、調整源碼分組、修改源碼排版等 | :pencil2: |
(6) | ✅ | 發布測試文件 | :white_check_mark: |
註1:
關於某個原始碼目前的閱讀進度,請參考已閱代碼清單_依功能排序。
註2:涉及修改源碼的場景,包括但不限於:
修改無意義的變數名為更易懂的變數名稱;
補全控制語句作用域上的花括號;
重構控制語句結構(如if語句的拆分,for/while的互換);
for迴圈和foreach迴圈的轉換;
拆分過長且難讀的呼叫鏈,將中間過程單獨摘出來;
提取頻繁出現的某段操作為單一方法;
將一個文件內的多個頂級類別拆分到不同的文件中(內部類別不拆分);
匿名類別與非匿名類別的轉換;
匿名類別與函數表達式的轉換;
函數式呼叫與普通呼叫的轉換;修改的原則是:盡量少修改,不要改變原有的程式碼邏輯與運行結果(涉及多執行緒的程式碼有些迷)
修改的目的是:增強可讀性,以及方便插入筆記
Oracle JDK
Open JDK
Commit資訊中的emoji
參考來源:
Full Emoji List
gitmoji