起因
最近在學習Java NIO部分,雖然看了很多網上的‘教程’,但是感覺還不夠深入,所以想自己深入看看源碼。結果NIO這部分涉及很多未開源的代碼。雖然ide通過反編譯看到部分源碼,但是代碼看起來還是太混亂。作為替代方案,就是看open-jdk的源碼,這里就不過多介紹open-jdk。一開始我是在網上直接打開open-jdk網頁版,一點一點翻代碼,但是這樣限制於網絡原因速度太慢,索引也不是太方便,所以就想在本地通過搭建open-jdk環境來實現在本地查看open-jdk的源碼。
准備
網絡上一堆的mac下編譯open-jdk的文章,就不一一贅述了。本人也試過,因為環境網絡問題以及os版本問題均告失敗,所以找了一個投機取巧的辦法。在 https://www.zhihu.com/question/53791269/answer/136575323
接觸到了 zulu這款產品,摘自知乎
Zulu是Azul Systems對OpenJDK的打包、測試、發布與支持。它沒有Oracle JDK對使用場景上的諸多限制,可以放心免費下載和使用。
它的核心部分就是原汁原味的OpenJDK,沒有任何額外的改動——Azul有時候也會對OpenJDK做bug fix,但這些都是通過提交回到OpenJDK去然后再進入到Zulu Java SE產品中的。
-------RednaxelaFX
吸引我的就是核心部分是原生的open-jdk,所以我們的投機取巧的辦法就出來了:安裝zulu,然后源碼部分添加open-jdk的源碼!
安裝初始化zulu
-
下載Zulu for Mac OS X ,download頁面 https://www.azul.com/downloads/zulu/,看你想看哪個版本的open-jdk,我下載的是對應java8的open-jdk版本8u131
-
可以按照 http://zulu.org/zulu-community/zuludocs/ ,zulu的guides來安裝,也可以像jdk一樣的無腦點擊安裝。最后
安裝的位置是在 /Library/Java/JavaVirtualMachines 下
-
配置環境變量,類似jdk配置一樣,~/.bash_profile下配置JAVA_HOME指向zulu的安裝目錄即可(跟oracle的jdk安裝一模一樣)。配置完畢以后使用 java -version來檢測:效果如下
openjdk version "1.8.0_144"
OpenJDK Runtime Environment (Zulu 8.23.0.3-macosx) (build 1.8.0_144-b01)
OpenJDK 64-Bit Server VM (Zulu 8.23.0.3-macosx) (build 25.144-b01, mixed mode)
獲取源碼
獲取源碼有幾種途徑,可以參考 http://www.jianshu.com/p/26bd050610a4 ,這篇文章中從官方獲取源碼,也可以走其他方式。因為本人網絡的問題(多次下載源碼超時),所以選了從國內找了對應版本的源碼(關鍵字 open-jdk8源碼),建議還是自己走官方獲取的方式!!
添加源碼
- 打開ide(idea): File —> Project Structure —> SDKS 新增open-jdk指向安裝目錄
- 同時在source tab頁面添加目錄,指向網絡上下載的open-jdk源碼目錄。
- 修改project的jdk使用open-jdk
大功告成,至此我們就可以在項目里直接查看open-jdk的源碼了!