从表到里学习JVM实现
生活随笔
收集整理的這篇文章主要介紹了
从表到里学习JVM实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在社會化分工、軟件行業(yè)細分專業(yè)化的趨勢下,會真的參與到底層系統(tǒng)實現(xiàn)的人肯定是越來越少(比例上說)。真的會參與到JVM實現(xiàn)的人肯定是少數(shù)。?
但如果您對JVM是如何實現(xiàn)的有興趣、充滿好奇,卻苦于沒有足夠系統(tǒng)的知識去深入,那么這個豆列就是為您打好基礎而準備的。?
如果只想用用Java用用JVM,對深入到實現(xiàn)細節(jié)無甚興趣的話,這個豆列就請不必參考了,免得浪費錢浪費時間精力,呵呵 :-)?
本豆列的脈絡是:?
1. JVM與Java語言規(guī)范?
要了解JVM是如何實現(xiàn)的,首先必須要知道JVM到底是什么、不是什么,表面上應該提供怎樣的功能。為此,JVM規(guī)范必讀,而且應該時常放在手邊參考。?
而JVM的主要服務對象是Java編程語言。雖然JVM也可以支持眾多其它語言,但JVM里的“J”仍然最重要,Java的語言特性影響了JVM的原始設計,所以Java語言規(guī)范也應該閱讀。特別是,JVM關于線程和同步相關的規(guī)定都是交由Java語言規(guī)范的相關章節(jié)定義的。?
2. 虛擬機概論?
這里選取《Virtual Machines: Versatile Platforms for Systems and Processes》,幫助您了解“虛擬機”一詞到底指代什么,有什么不同類型,大概有哪些實現(xiàn)方法,等等。讀完這本書有助獲得一個清晰的大局觀。?
3. 為Java程序員從用戶的角度介紹JVM的使用經(jīng)驗的幾本書?
雖然這幾本并沒有深入到JVM實現(xiàn)的非常細節(jié)的角落,但對已經(jīng)習慣用Java語言編程的程序員來說,有這么幾本書帶領自己從熟悉的領域進入不熟悉的領域總是件好事。?
這幾本書中,最深入JVM內部的是《Oracle JRockit: The Definitive Guide》;有豐富調優(yōu)建議的是《Java Performance》;結合實現(xiàn)大概介紹JVM的抽象概念的是周志明的《深入理解Java虛擬機》。?
4. 虛擬機的入門級實現(xiàn)?
先通過《Language Implementation Patterns》了解編程語言的一些入門級實現(xiàn)方式,把高級語言編譯器與虛擬機兩個概念聯(lián)系起來。?
然后通過《プログラミング言語を作る》了解非常簡易的、用樹遍歷式以及字節(jié)碼式解釋器實現(xiàn)虛擬機大概是個怎么回事。雖然這本書沒有實現(xiàn)JVM,但它介紹的Diksam與早期JVM的實現(xiàn)頗有相似之處,可參考。?
接下來《深入嵌入式Java虛擬機》介紹了一種實際的JVM——KVM的實現(xiàn)細節(jié)。KVM是CLDC的參考實現(xiàn)(RI)里的JVM,結構簡單,資源消耗小,適合入門閱讀。?
陳濤的《HotSpot實戰(zhàn)》主要介紹了HotSpot VM的核心VM的實現(xiàn)。第一版的內容還不算深,介紹runtime的部分比較多,而介紹GC與動態(tài)編譯器的具體實現(xiàn)的部分比較少。想對HotSpot VM的實現(xiàn)有初步了解,但擔心GC與編譯原理的知識太難的同學可以從這本書入手。?
(不過請注意自己對著代碼確實把知識消化掉,因為這個第一版的內容有不少小錯誤嗯…)?
這部分最后是《The School of Niklaus Wirth》,里面有一章介紹了HotSpot Client Compiler (C1)的原始設計思路。這是個非常簡單、但相對來說性能還不錯的JIT編譯器,可用于對JIT編譯器的基本了解。這本書本身就很贊,不為學習虛擬機也可以一讀。?
需要注意的是從“簡易的JVM實現(xiàn)”到“高性能、復雜的JVM實現(xiàn)”跨度非常大;前者的許多部分的實現(xiàn)方式與后者相當不同。先從簡易的實現(xiàn)開始入手主要是為了對JVM里大概都有些什么組件有所了解。但如果目標是了解高性能JVM的實現(xiàn),那就必須在GC、編譯原理方面打下更好的基礎,重新洗一次腦。?
5. C++基礎書?
下面要開始逐漸深入JVM的內部實現(xiàn),如果沒有良好的C或(與?)C++基礎會比較吃力。雖然也有幾乎完全用Java語言實現(xiàn)的高性能JVM,例如Maxine VM與Jikes RVM,但它們都是研究性質的;商用JVM實現(xiàn)仍然是C與C++的天下。?
這里我先推薦C++之父自己寫的那本書來入門。雖然BS巨巨后來還出過本新書,而近來也漸漸開始有介紹C++11的入門書,但實際上現(xiàn)在多數(shù)JVM實現(xiàn)用的還是C99或非常古老的C++(連C++03都不一定用到了),所以用這本老書應該就夠了。?
然后通過《深度探索C++對象模型》來學習C++對象模型的常見實現(xiàn)方式。這對后面理解Java對象模型的實現(xiàn)很有幫助。?
6. GC與編譯原理的入門書?
GC書總共就那么幾本,倒也沒啥可挑的。《The Garbage Collection Handbook》是絕對必讀。?
編譯原理的書就稍微尷尬些。現(xiàn)有的編譯原理書大都針對靜態(tài)編譯器、針對像C或C++那樣的偏靜態(tài)、偏native的語言。我還沒讀到過什么編譯原理書是專門介紹JIT編譯器或者說動態(tài)編譯器的。《The Compiler Design Handbook》(http://book.douban.com/subject/2333166/)算是有一章專門講動態(tài)編譯,不過也只是很入門的介紹。?
靜態(tài)與動態(tài)編譯器會有些取舍上、實現(xiàn)策略上的差異,不過還好其核心的原理都是一樣的,所以還是可以推薦幾本書。龍書用來最初入門,鯨書用來補充一些優(yōu)化相關的知識,EAC第二版用來學習編譯器一種比較良好的邏輯組織方式,最后學一下針對現(xiàn)代機器的優(yōu)化。《Optimizing Compilers for Modern Architectures》(http://book.douban.com/subject/2126867/)是我比較喜歡的一本。?
7. 介紹計算機體系結構的書?
實際JVM實現(xiàn)里,如果有JIT編譯器或者動態(tài)編譯器那它們的編譯目標多半是底層機器的機器碼。這就涉及到計算機體系結構了。?
如果您只對Java語言和抽象的JVM有一定了解,那可以用《計算機組成及匯編語言原理》來入門。這本書比較奇葩,用JVM的字節(jié)碼指令集來當作真實機器介紹體系結構的概念。我并不太喜歡這本書,但感覺它對有Java背景的初學者來說應該有點用。要注意的是千萬別只讀這本書來入門,請結合CSAPP來重新洗一次腦。?
如果對C或C++已經(jīng)有所了解,那《深入理解計算機系統(tǒng)》(CSAPP)是計算機體系結構入門的最適合的書了。?
8. 進一步閱讀?
到此為止各種抽象概念應該都了解得差不多了。那么要在真實的機器上實現(xiàn)高性能JVM,就必須要對真實機器的指令集細節(jié)有所了解。x86/x86-64、SPARC、ARM、MIPS,要在哪個平臺上做高性能實現(xiàn)就要學習哪個平臺的指令集及指令級別優(yōu)化技巧。這里就不具體推薦書了。?
操作系統(tǒng)層面的知識同樣重要。像是說JVM要實現(xiàn)線程、內存分配啥的,都可能要跟系統(tǒng)調用或CRT對系統(tǒng)調用的包裝打交道。這部分也需要另外找書來讀。我回頭再考慮下要不要加幾本道這個豆列里來。?
另外,從80年代開始高級語言虛擬機的實現(xiàn)技術有了突飛猛進的發(fā)展,但卻沒有專門的書對這個領域做綜述和導讀。多數(shù)有用的資料其實還是在論文里。光靠讀書是遠遠不夠用的,論文這塊也請關注。?
順便廣告一下:我的博客里關于虛擬機的文章也推薦給大家閱讀:http://rednaxelafx.iteye.com/blog/362738?
=====================================?
這個豆列沒有漏掉《Inside the Java Virtual Machine, Second Edition》(?http://book.douban.com/subject/1788390/?,中文版《深入Java虛擬機(原書第2版)》,http://book.douban.com/subject/1138768/) ,只是我現(xiàn)在已經(jīng)不再推薦它了。這本書剛出版的時候確實引起了一番學習Java虛擬機的熱潮,但其部分內容從現(xiàn)在的角度看已經(jīng)過時,特別是涉及JVM實現(xiàn)的部分。像火車算法什么的現(xiàn)在已經(jīng)沒有JVM實現(xiàn)使用。不過話說回來,了解了解這些過時的信息也沒什么不好,前提是能自己分辨清楚哪些信息是適用于現(xiàn)在的JVM的,而哪些已經(jīng)成為了歷史。?
另外有一本清華大學出版社出的《解析Java虛擬機開發(fā)——權衡優(yōu)化.高效和安全的最優(yōu)方案》(http://book.douban.com/subject/24757135/),這本純粹是對周志明的《深入理解Java虛擬機》一書的抄襲;周志明與出版社對清華大學出版社的侵權行為提起的訴訟已經(jīng)勝訴。然而抄襲也抄得很不給力,印刷、排版都不如原版。建議不要購買。?
推薦?171人 +收藏???1188人收藏? 全部(22)?·?圖書(22) 按添加順序查看 1 來自:豆瓣讀書 The Java Language Specification, Java SE 7 Edition ?(4人評價) 作者: James Gosling / Bill Joy / Guy L. Steele Jr. / Gilad Bracha / Alex Buckley?
出版社: Addison-Wesley Professional?
出版年: 2013-2-24 評語:如果不是有錢沒處花的話這本規(guī)范不需要買紙質出版的版本。在Oracle官網(wǎng)可以下載到其電子版(HTML/PDF格式):http://docs.oracle.com/javase/specs/index.html 2013年6月13日贊?回復 2 來自:豆瓣讀書 The Java Virtual Machine Specification, Java SE 7 Edition ?(9人評價) 作者: Tim Lindholm / Frank Yellin / Gilad Bracha / Alex Buckley?
出版社: Addison-Wesley Professional?
出版年: 2013-2-25 評語:同上,在Oracle官網(wǎng)可以下載到其電子版(HTML/PDF格式):http://docs.oracle.com/javase/specs/index.html 如果沒有對操作系統(tǒng)、計算機體系結構等基礎的事先了解,這規(guī)范有些地方讀起來可能會無法理解透徹。例如在講解方法區(qū)時規(guī)范說它跟操作系統(tǒng)進程里的“text”段對應:text段是啥?要了解這些就得讀后面的書來補足。 2013年6月13日贊?(1)?回復 3 來自:豆瓣讀書 虛擬機 ??(29人評價) 作者: 史密斯?
出版社: 電子工業(yè)出版社?
出版年: 2006-7 評語:這本雖然我讀的是影印版所以推薦的也是這版,但現(xiàn)在也有中文版了。更愛讀中文版的可以選后者。 2013年6月13日贊?回復 4 來自:豆瓣讀書 Java Performance ??(54人評價) 作者: Charlie Hunt / Binu John?
出版社: Prentice Hall?
出版年: 2011-10-14 2013年6月13日贊?回復 5 來自:豆瓣讀書 Oracle JRockit ??(14人評價) 作者: Marcus Hirt / Marcus Lagergren?
出版社: Packt Publishing?
出版年: 2010-6-1 2013年6月13日贊?回復 6 來自:豆瓣讀書 深入理解Java虛擬機 ??(648人評價) 作者: 周志明?
出版社: 機械工業(yè)出版社?
出版年: 2011-6 2013年6月13日贊?回復 7 來自:豆瓣讀書 深入理解Java虛擬機(第2版) ??(493人評價) 作者: 周志明?
出版社: 機械工業(yè)出版社?
出版年: 2013-9-1 評語:內容比第一版更充實,也修正了一次第一版里出現(xiàn)的錯漏。如果沒買第一版的話強烈推薦直接買第二版來讀 ^_^ 2013年6月13日贊?(1)?回復 8 來自:豆瓣讀書 HotSpot實戰(zhàn) ??(20人評價) 作者: 陳濤?
出版社: 人民郵電出版社?
出版年: 2014-3 2014年5月4日贊?回復 9 來自:豆瓣讀書 Language Implementation Patterns ??(42人評價) 作者: Terence Parr?
出版社: Pragmatic Bookshelf?
出版年: 2010-1-10 2013年6月13日贊?回復 10 來自:豆瓣讀書 プログラミング言語を作る ?(2人評價) 作者: 前橋 和彌?
出版社: 技術評論社?
出版年: 2009 評語:挺喜歡這本入門書的樸實風格。它介紹的Crowbar與Diksam的實現(xiàn)都頗有代表性。聽@圖靈樂馨 說這本的中文版年內能出版,讀不懂日文技術書的同學們可以期待下!中文版鏈接:http://book.douban.com/subject/25735333/ 這本書的許多內容作者都發(fā)在網(wǎng)上了,包括那兩個虛擬機的完整源碼:http://kmaebashi.com/programmer/devlang/index.html 2013年6月13日贊?(2)?回復 11 來自:豆瓣讀書 深入嵌入式Java虛擬機 ?(7人評價) 作者: 劉穎 / 劉文龍 / 蘇茜?
出版社: 中國鐵道出版社?
出版年: 2003-5-1 2013年6月13日贊?回復 12 來自:豆瓣讀書 The School of Niklaus Wirth ?(2人評價) 作者: Boeszoermenyi, Laszlo; Boszormenyi, Laszlo; Bvszvrminyi, Laszls?
出版社: Morgan Kaufmann?
出版年: 2000-10-25 2013年6月13日贊?回復 13 來自:豆瓣讀書 C++ 程序設計語言(特別版)(英文影印版) ??(153人評價) 作者: [美] Bjarne Stroustrup?
出版社: 高等教育出版社?
出版年: 2001-8-1 2013年6月13日贊?回復 14 來自:豆瓣讀書 深度探索C++對象模型 ??(1340人評價) 作者: [美] Stanley B. Lippman?
出版社: 華中科技大學出版社?
出版年: 2001-5 評語:對象模型的知識在實現(xiàn)VM時也用得上。 2013年6月13日贊?回復 15 來自:豆瓣讀書 The Garbage Collection Handbook ??(18人評價) 作者: Richard Jones / Antony Hosking / Eliot Moss?
出版社: Chapman and Hall/CRC?
出版年: 2011-8-17 評語:GC圣經(jīng)。要學GC的話應該人手一本。 2013年6月13日贊?回復 16 來自:豆瓣讀書 ガベージコレクションのアルゴリズムと実裝 ?(4人評價) 作者: 中村 成洋 / 相川 光?
出版社: 秀和システム?
出版年: 2010-03-18 評語:特點:前半是算法篇介紹基本GC算法;后半是實現(xiàn)篇,介紹幾種具體GC的實現(xiàn),包括V8、Rubinius、Dalvik、CPython等的(前三個介紹的是早期版本的)。這幾個虛擬機倒沒有直接就是JVM的,Dalvik勉強算大半個吧。作者本想在實現(xiàn)篇包括對HotSpot VM的Garbage-First GC的介紹,但時間沒來得及。于是他另外出了兩本《徹底解剖「G1GC」 アルゴリズム編》(http://tatsu-zine.com/books/g1gc)和《徹底解剖「G1GC」実裝編》(http://tatsu-zine.com/books/g1gc-impl),結合論文和源碼閱讀效果佳。 2013年6月13日贊?2回復 17 來自:豆瓣讀書 編譯原理 技術與工具 ??(72人評價) 作者: Alfred V. Aho / Ravi Sethi / Monica S. Lam / Jeffrey D. Ullman?
出版社: 人民郵電?
出版年: 2008-2-1 2013年6月13日贊?回復 18 來自:豆瓣讀書 高級編譯器設計與實現(xiàn) ??(34人評價) 作者: (美)馬其尼克/趙克佳/沈志宇?
出版社: 機械工業(yè)出版社?
出版年: 2005-01-01 2013年6月13日贊?回復 19 來自:豆瓣讀書 Engineering a Compiler, Second Edition ??(27人評價) 作者: Keith Cooper / Linda Torczon?
出版社: Morgan Kaufmann?
出版年: 2011-2-21 2013年6月13日贊?回復 20 來自:豆瓣讀書 Optimizing Compilers for Modern Architectures ??(13人評價) 作者: Randy Allen / Ken Kennedy?
出版社: Morgan Kaufmann?
出版年: 2001-10-10 2014年11月30日贊?回復 21 來自:豆瓣讀書 計算機組成及匯編語言原理 ?(3人評價) 作者: 卓拉?
出版社: 機械工業(yè)出版社?
出版年: 2008-5 2013年6月13日贊?回復 22 來自:豆瓣讀書 深入理解計算機系統(tǒng)(英文版·第2版) ??(228人評價) 作者: [美] Randal E. Bryant / [美] David R. O'Hallaron?
出版社: 機械工業(yè)出版社?
出版年: 2011-1
from:?https://www.douban.com/doulist/2545443/ 來自:?RednaxelaFX (San Francisco Bay Area)?
但如果您對JVM是如何實現(xiàn)的有興趣、充滿好奇,卻苦于沒有足夠系統(tǒng)的知識去深入,那么這個豆列就是為您打好基礎而準備的。?
如果只想用用Java用用JVM,對深入到實現(xiàn)細節(jié)無甚興趣的話,這個豆列就請不必參考了,免得浪費錢浪費時間精力,呵呵 :-)?
本豆列的脈絡是:?
1. JVM與Java語言規(guī)范?
要了解JVM是如何實現(xiàn)的,首先必須要知道JVM到底是什么、不是什么,表面上應該提供怎樣的功能。為此,JVM規(guī)范必讀,而且應該時常放在手邊參考。?
而JVM的主要服務對象是Java編程語言。雖然JVM也可以支持眾多其它語言,但JVM里的“J”仍然最重要,Java的語言特性影響了JVM的原始設計,所以Java語言規(guī)范也應該閱讀。特別是,JVM關于線程和同步相關的規(guī)定都是交由Java語言規(guī)范的相關章節(jié)定義的。?
2. 虛擬機概論?
這里選取《Virtual Machines: Versatile Platforms for Systems and Processes》,幫助您了解“虛擬機”一詞到底指代什么,有什么不同類型,大概有哪些實現(xiàn)方法,等等。讀完這本書有助獲得一個清晰的大局觀。?
3. 為Java程序員從用戶的角度介紹JVM的使用經(jīng)驗的幾本書?
雖然這幾本并沒有深入到JVM實現(xiàn)的非常細節(jié)的角落,但對已經(jīng)習慣用Java語言編程的程序員來說,有這么幾本書帶領自己從熟悉的領域進入不熟悉的領域總是件好事。?
這幾本書中,最深入JVM內部的是《Oracle JRockit: The Definitive Guide》;有豐富調優(yōu)建議的是《Java Performance》;結合實現(xiàn)大概介紹JVM的抽象概念的是周志明的《深入理解Java虛擬機》。?
4. 虛擬機的入門級實現(xiàn)?
先通過《Language Implementation Patterns》了解編程語言的一些入門級實現(xiàn)方式,把高級語言編譯器與虛擬機兩個概念聯(lián)系起來。?
然后通過《プログラミング言語を作る》了解非常簡易的、用樹遍歷式以及字節(jié)碼式解釋器實現(xiàn)虛擬機大概是個怎么回事。雖然這本書沒有實現(xiàn)JVM,但它介紹的Diksam與早期JVM的實現(xiàn)頗有相似之處,可參考。?
接下來《深入嵌入式Java虛擬機》介紹了一種實際的JVM——KVM的實現(xiàn)細節(jié)。KVM是CLDC的參考實現(xiàn)(RI)里的JVM,結構簡單,資源消耗小,適合入門閱讀。?
陳濤的《HotSpot實戰(zhàn)》主要介紹了HotSpot VM的核心VM的實現(xiàn)。第一版的內容還不算深,介紹runtime的部分比較多,而介紹GC與動態(tài)編譯器的具體實現(xiàn)的部分比較少。想對HotSpot VM的實現(xiàn)有初步了解,但擔心GC與編譯原理的知識太難的同學可以從這本書入手。?
(不過請注意自己對著代碼確實把知識消化掉,因為這個第一版的內容有不少小錯誤嗯…)?
這部分最后是《The School of Niklaus Wirth》,里面有一章介紹了HotSpot Client Compiler (C1)的原始設計思路。這是個非常簡單、但相對來說性能還不錯的JIT編譯器,可用于對JIT編譯器的基本了解。這本書本身就很贊,不為學習虛擬機也可以一讀。?
需要注意的是從“簡易的JVM實現(xiàn)”到“高性能、復雜的JVM實現(xiàn)”跨度非常大;前者的許多部分的實現(xiàn)方式與后者相當不同。先從簡易的實現(xiàn)開始入手主要是為了對JVM里大概都有些什么組件有所了解。但如果目標是了解高性能JVM的實現(xiàn),那就必須在GC、編譯原理方面打下更好的基礎,重新洗一次腦。?
5. C++基礎書?
下面要開始逐漸深入JVM的內部實現(xiàn),如果沒有良好的C或(與?)C++基礎會比較吃力。雖然也有幾乎完全用Java語言實現(xiàn)的高性能JVM,例如Maxine VM與Jikes RVM,但它們都是研究性質的;商用JVM實現(xiàn)仍然是C與C++的天下。?
這里我先推薦C++之父自己寫的那本書來入門。雖然BS巨巨后來還出過本新書,而近來也漸漸開始有介紹C++11的入門書,但實際上現(xiàn)在多數(shù)JVM實現(xiàn)用的還是C99或非常古老的C++(連C++03都不一定用到了),所以用這本老書應該就夠了。?
然后通過《深度探索C++對象模型》來學習C++對象模型的常見實現(xiàn)方式。這對后面理解Java對象模型的實現(xiàn)很有幫助。?
6. GC與編譯原理的入門書?
GC書總共就那么幾本,倒也沒啥可挑的。《The Garbage Collection Handbook》是絕對必讀。?
編譯原理的書就稍微尷尬些。現(xiàn)有的編譯原理書大都針對靜態(tài)編譯器、針對像C或C++那樣的偏靜態(tài)、偏native的語言。我還沒讀到過什么編譯原理書是專門介紹JIT編譯器或者說動態(tài)編譯器的。《The Compiler Design Handbook》(http://book.douban.com/subject/2333166/)算是有一章專門講動態(tài)編譯,不過也只是很入門的介紹。?
靜態(tài)與動態(tài)編譯器會有些取舍上、實現(xiàn)策略上的差異,不過還好其核心的原理都是一樣的,所以還是可以推薦幾本書。龍書用來最初入門,鯨書用來補充一些優(yōu)化相關的知識,EAC第二版用來學習編譯器一種比較良好的邏輯組織方式,最后學一下針對現(xiàn)代機器的優(yōu)化。《Optimizing Compilers for Modern Architectures》(http://book.douban.com/subject/2126867/)是我比較喜歡的一本。?
7. 介紹計算機體系結構的書?
實際JVM實現(xiàn)里,如果有JIT編譯器或者動態(tài)編譯器那它們的編譯目標多半是底層機器的機器碼。這就涉及到計算機體系結構了。?
如果您只對Java語言和抽象的JVM有一定了解,那可以用《計算機組成及匯編語言原理》來入門。這本書比較奇葩,用JVM的字節(jié)碼指令集來當作真實機器介紹體系結構的概念。我并不太喜歡這本書,但感覺它對有Java背景的初學者來說應該有點用。要注意的是千萬別只讀這本書來入門,請結合CSAPP來重新洗一次腦。?
如果對C或C++已經(jīng)有所了解,那《深入理解計算機系統(tǒng)》(CSAPP)是計算機體系結構入門的最適合的書了。?
8. 進一步閱讀?
到此為止各種抽象概念應該都了解得差不多了。那么要在真實的機器上實現(xiàn)高性能JVM,就必須要對真實機器的指令集細節(jié)有所了解。x86/x86-64、SPARC、ARM、MIPS,要在哪個平臺上做高性能實現(xiàn)就要學習哪個平臺的指令集及指令級別優(yōu)化技巧。這里就不具體推薦書了。?
操作系統(tǒng)層面的知識同樣重要。像是說JVM要實現(xiàn)線程、內存分配啥的,都可能要跟系統(tǒng)調用或CRT對系統(tǒng)調用的包裝打交道。這部分也需要另外找書來讀。我回頭再考慮下要不要加幾本道這個豆列里來。?
另外,從80年代開始高級語言虛擬機的實現(xiàn)技術有了突飛猛進的發(fā)展,但卻沒有專門的書對這個領域做綜述和導讀。多數(shù)有用的資料其實還是在論文里。光靠讀書是遠遠不夠用的,論文這塊也請關注。?
順便廣告一下:我的博客里關于虛擬機的文章也推薦給大家閱讀:http://rednaxelafx.iteye.com/blog/362738?
=====================================?
這個豆列沒有漏掉《Inside the Java Virtual Machine, Second Edition》(?http://book.douban.com/subject/1788390/?,中文版《深入Java虛擬機(原書第2版)》,http://book.douban.com/subject/1138768/) ,只是我現(xiàn)在已經(jīng)不再推薦它了。這本書剛出版的時候確實引起了一番學習Java虛擬機的熱潮,但其部分內容從現(xiàn)在的角度看已經(jīng)過時,特別是涉及JVM實現(xiàn)的部分。像火車算法什么的現(xiàn)在已經(jīng)沒有JVM實現(xiàn)使用。不過話說回來,了解了解這些過時的信息也沒什么不好,前提是能自己分辨清楚哪些信息是適用于現(xiàn)在的JVM的,而哪些已經(jīng)成為了歷史。?
另外有一本清華大學出版社出的《解析Java虛擬機開發(fā)——權衡優(yōu)化.高效和安全的最優(yōu)方案》(http://book.douban.com/subject/24757135/),這本純粹是對周志明的《深入理解Java虛擬機》一書的抄襲;周志明與出版社對清華大學出版社的侵權行為提起的訴訟已經(jīng)勝訴。然而抄襲也抄得很不給力,印刷、排版都不如原版。建議不要購買。?
推薦?171人 +收藏???1188人收藏? 全部(22)?·?圖書(22) 按添加順序查看 1 來自:豆瓣讀書 The Java Language Specification, Java SE 7 Edition ?(4人評價) 作者: James Gosling / Bill Joy / Guy L. Steele Jr. / Gilad Bracha / Alex Buckley?
出版社: Addison-Wesley Professional?
出版年: 2013-2-24 評語:如果不是有錢沒處花的話這本規(guī)范不需要買紙質出版的版本。在Oracle官網(wǎng)可以下載到其電子版(HTML/PDF格式):http://docs.oracle.com/javase/specs/index.html 2013年6月13日贊?回復 2 來自:豆瓣讀書 The Java Virtual Machine Specification, Java SE 7 Edition ?(9人評價) 作者: Tim Lindholm / Frank Yellin / Gilad Bracha / Alex Buckley?
出版社: Addison-Wesley Professional?
出版年: 2013-2-25 評語:同上,在Oracle官網(wǎng)可以下載到其電子版(HTML/PDF格式):http://docs.oracle.com/javase/specs/index.html 如果沒有對操作系統(tǒng)、計算機體系結構等基礎的事先了解,這規(guī)范有些地方讀起來可能會無法理解透徹。例如在講解方法區(qū)時規(guī)范說它跟操作系統(tǒng)進程里的“text”段對應:text段是啥?要了解這些就得讀后面的書來補足。 2013年6月13日贊?(1)?回復 3 來自:豆瓣讀書 虛擬機 ??(29人評價) 作者: 史密斯?
出版社: 電子工業(yè)出版社?
出版年: 2006-7 評語:這本雖然我讀的是影印版所以推薦的也是這版,但現(xiàn)在也有中文版了。更愛讀中文版的可以選后者。 2013年6月13日贊?回復 4 來自:豆瓣讀書 Java Performance ??(54人評價) 作者: Charlie Hunt / Binu John?
出版社: Prentice Hall?
出版年: 2011-10-14 2013年6月13日贊?回復 5 來自:豆瓣讀書 Oracle JRockit ??(14人評價) 作者: Marcus Hirt / Marcus Lagergren?
出版社: Packt Publishing?
出版年: 2010-6-1 2013年6月13日贊?回復 6 來自:豆瓣讀書 深入理解Java虛擬機 ??(648人評價) 作者: 周志明?
出版社: 機械工業(yè)出版社?
出版年: 2011-6 2013年6月13日贊?回復 7 來自:豆瓣讀書 深入理解Java虛擬機(第2版) ??(493人評價) 作者: 周志明?
出版社: 機械工業(yè)出版社?
出版年: 2013-9-1 評語:內容比第一版更充實,也修正了一次第一版里出現(xiàn)的錯漏。如果沒買第一版的話強烈推薦直接買第二版來讀 ^_^ 2013年6月13日贊?(1)?回復 8 來自:豆瓣讀書 HotSpot實戰(zhàn) ??(20人評價) 作者: 陳濤?
出版社: 人民郵電出版社?
出版年: 2014-3 2014年5月4日贊?回復 9 來自:豆瓣讀書 Language Implementation Patterns ??(42人評價) 作者: Terence Parr?
出版社: Pragmatic Bookshelf?
出版年: 2010-1-10 2013年6月13日贊?回復 10 來自:豆瓣讀書 プログラミング言語を作る ?(2人評價) 作者: 前橋 和彌?
出版社: 技術評論社?
出版年: 2009 評語:挺喜歡這本入門書的樸實風格。它介紹的Crowbar與Diksam的實現(xiàn)都頗有代表性。聽@圖靈樂馨 說這本的中文版年內能出版,讀不懂日文技術書的同學們可以期待下!中文版鏈接:http://book.douban.com/subject/25735333/ 這本書的許多內容作者都發(fā)在網(wǎng)上了,包括那兩個虛擬機的完整源碼:http://kmaebashi.com/programmer/devlang/index.html 2013年6月13日贊?(2)?回復 11 來自:豆瓣讀書 深入嵌入式Java虛擬機 ?(7人評價) 作者: 劉穎 / 劉文龍 / 蘇茜?
出版社: 中國鐵道出版社?
出版年: 2003-5-1 2013年6月13日贊?回復 12 來自:豆瓣讀書 The School of Niklaus Wirth ?(2人評價) 作者: Boeszoermenyi, Laszlo; Boszormenyi, Laszlo; Bvszvrminyi, Laszls?
出版社: Morgan Kaufmann?
出版年: 2000-10-25 2013年6月13日贊?回復 13 來自:豆瓣讀書 C++ 程序設計語言(特別版)(英文影印版) ??(153人評價) 作者: [美] Bjarne Stroustrup?
出版社: 高等教育出版社?
出版年: 2001-8-1 2013年6月13日贊?回復 14 來自:豆瓣讀書 深度探索C++對象模型 ??(1340人評價) 作者: [美] Stanley B. Lippman?
出版社: 華中科技大學出版社?
出版年: 2001-5 評語:對象模型的知識在實現(xiàn)VM時也用得上。 2013年6月13日贊?回復 15 來自:豆瓣讀書 The Garbage Collection Handbook ??(18人評價) 作者: Richard Jones / Antony Hosking / Eliot Moss?
出版社: Chapman and Hall/CRC?
出版年: 2011-8-17 評語:GC圣經(jīng)。要學GC的話應該人手一本。 2013年6月13日贊?回復 16 來自:豆瓣讀書 ガベージコレクションのアルゴリズムと実裝 ?(4人評價) 作者: 中村 成洋 / 相川 光?
出版社: 秀和システム?
出版年: 2010-03-18 評語:特點:前半是算法篇介紹基本GC算法;后半是實現(xiàn)篇,介紹幾種具體GC的實現(xiàn),包括V8、Rubinius、Dalvik、CPython等的(前三個介紹的是早期版本的)。這幾個虛擬機倒沒有直接就是JVM的,Dalvik勉強算大半個吧。作者本想在實現(xiàn)篇包括對HotSpot VM的Garbage-First GC的介紹,但時間沒來得及。于是他另外出了兩本《徹底解剖「G1GC」 アルゴリズム編》(http://tatsu-zine.com/books/g1gc)和《徹底解剖「G1GC」実裝編》(http://tatsu-zine.com/books/g1gc-impl),結合論文和源碼閱讀效果佳。 2013年6月13日贊?2回復 17 來自:豆瓣讀書 編譯原理 技術與工具 ??(72人評價) 作者: Alfred V. Aho / Ravi Sethi / Monica S. Lam / Jeffrey D. Ullman?
出版社: 人民郵電?
出版年: 2008-2-1 2013年6月13日贊?回復 18 來自:豆瓣讀書 高級編譯器設計與實現(xiàn) ??(34人評價) 作者: (美)馬其尼克/趙克佳/沈志宇?
出版社: 機械工業(yè)出版社?
出版年: 2005-01-01 2013年6月13日贊?回復 19 來自:豆瓣讀書 Engineering a Compiler, Second Edition ??(27人評價) 作者: Keith Cooper / Linda Torczon?
出版社: Morgan Kaufmann?
出版年: 2011-2-21 2013年6月13日贊?回復 20 來自:豆瓣讀書 Optimizing Compilers for Modern Architectures ??(13人評價) 作者: Randy Allen / Ken Kennedy?
出版社: Morgan Kaufmann?
出版年: 2001-10-10 2014年11月30日贊?回復 21 來自:豆瓣讀書 計算機組成及匯編語言原理 ?(3人評價) 作者: 卓拉?
出版社: 機械工業(yè)出版社?
出版年: 2008-5 2013年6月13日贊?回復 22 來自:豆瓣讀書 深入理解計算機系統(tǒng)(英文版·第2版) ??(228人評價) 作者: [美] Randal E. Bryant / [美] David R. O'Hallaron?
出版社: 機械工業(yè)出版社?
出版年: 2011-1
from:?https://www.douban.com/doulist/2545443/ 來自:?RednaxelaFX (San Francisco Bay Area)?
總結
以上是生活随笔為你收集整理的从表到里学习JVM实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅析java内存管理机制
- 下一篇: 架构师之路16年精选50篇