雙管齊下, 清華教授親碼JDK和HotSpot源碼筆記,一次性學個明白

索引

歷史上的原因是,OpenJDK是JDK的開放原始碼版本,OpenJDK是Sun在2006年末把Java開源而形成的項目,這裏的“開源”是通常意義上的源碼開放形式,即源碼是可被複用的,例如IcedTea、UltraViolet都是從OpenJDK源碼衍生出的發行版。

把這些JRL許可證形式的Sun/OracleJDK源碼和對應版本的OpenJDK源碼進行比較,發現除了文件頭的版權註釋之外,其餘代碼基本上都是相同的,只有字體渲染部分存在一點差異,Oracle JDK採用了商業實現,而OpenJDK使用的是開源的FreeType。當然,“相同”是建立在兩者共有的組件基礎上的,Oracle JDK中還會存在一些Open JDK沒有的、商用閉源的功能.

HotSpot歷史

HotSpot是Sun JDK和OpenJDK中所帶的虛擬機,也是目前使用範圍最廣的Java虛擬機。 但不一定所有人都知道的是,這個目前看起來“血統純正”的虛擬機在最初並非由Sun公司開發,而是由一家名爲“Longview Technologies”的小公司設計的; 甚至這個虛擬機最初並非是爲Java語言而開發的,它來源於Strongtalk VM, 而這款虛擬機中相當多的技術又是來源於一款支持Self語言實現“達到C語言50%以上的執行效率”的目標而設計的虛擬機, Sun公司注意到了這款虛擬機在JIT編譯上有許多優秀的理念和實際效果,在1997年收購了Longview Technologies公司,從而獲得了HotSpot VM。

SUN的JDK版本從1.3.1開始運用HotSpot虛擬機, 2006年底開源,主要使用C++實現,JNI接口部分用C實現。

HotSpot是較新的Java虛擬機,用來代替JIT(Just in Time),可以大大提高Java運行的性能。

Java原先是把源代碼編譯爲字節碼在虛擬機執行,這樣執行速度較慢。而HotSpot將常用的部分代碼編譯爲本地(原生,native)代碼,這樣顯着提高了性能。

下面分享清華教授親碼的JDK和HotSpot源碼:

JDK源碼手冊

除了第一章節的內容外,我們會從第二章開始自下而上,從簡單到複雜的有順序的深度學習整個Concurrent包


Semaphore(Semaphore也就是信號量,提供了資源數量的併發訪問控制)

HotSpot源碼手冊

這份手冊主要講述的就是HotSpot基礎功能模塊的源碼,這份手冊對於你基礎地基將會是一個很好的補充,同時手冊將會結合大量的實例進行講解,這樣對於受衆來說將會更加容易接受以及吸收。

HandleArea、Area與Chunk

klassVtable類

Space類

Generation類的實現是基於Space類的,Space類負責實際的內存管理

最後

有需要這份筆記的小夥伴可關注後私信回覆“源碼筆記”即可獲取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章