JVM程序員的閱讀清單
前些天,我發(fā)現(xiàn)我和幾個(gè)同行進(jìn)行的一系列討論中,有部分話題是關(guān)于在Linux系統(tǒng)JVM上運(yùn)行大量線程的性能問題。我并不是說我是這個(gè)主題的專家,但我曾經(jīng)以為掌握得很好的一些知識(shí)點(diǎn)卻并沒有我想的那么無懈可擊。之后,我閱讀了一些別人推薦的有關(guān)這個(gè)主題的書,我不得不承認(rèn)我原來很多知識(shí)點(diǎn)都不知道。這樣的情況經(jīng)常發(fā)生,我通常會(huì)記下來少數(shù)一些我覺得值得研究的資源。
所以,這里是我推薦的閱讀列表,給那些正在學(xué)習(xí)基于JVM開發(fā)的程序員們閱讀,他們需要了解環(huán)境的特性,尤其是當(dāng)遇到和性能以及同步相關(guān)的問題時(shí)。老實(shí)說,我也不能說我閱讀了所有的材料。但經(jīng)過上面提到的和同事的對(duì)話后,我決定下功夫去彌補(bǔ)我知識(shí)體系上的缺陷,盡可能多的閱讀下面每一本書。并且我認(rèn)為如果你想學(xué)會(huì)某一門技藝的話,你必須持續(xù)不斷的學(xué)習(xí)和鉆研。
《Jave Performance》是這個(gè)領(lǐng)域的一本新書,十月份剛出版,卻一本***的好書。它涵蓋了工具和技術(shù)(性能測(cè)評(píng),建立基準(zhǔn),性能調(diào)試等等),也涵蓋了更深的但很少被考慮的技術(shù)(如操作系統(tǒng)層次的工具、JIT、垃圾回收等等),甚至包含了處理基于JAX-RS的網(wǎng)絡(luò)應(yīng)用。
《Java Concurrency in Practice | Java并發(fā)編程實(shí)戰(zhàn) 》對(duì)于任何一個(gè)想要了解Java標(biāo)準(zhǔn)庫中內(nèi)建的并發(fā)基礎(chǔ)與結(jié)構(gòu)的程序員來說,具有很好的指導(dǎo)作用。即使你不直接處理并發(fā),你也需要了解這本書中闡述的原理。
《What Every Programmer Should Know About Memory 》(這里有HTML版本)是一本關(guān)于系統(tǒng)內(nèi)存的系統(tǒng)介紹。你將會(huì)學(xué)到比你想象得多得多的知識(shí),但也是個(gè)痛苦的過程。相信我 ;~)
《Linux Kernel Development (3rd Edition) 》歸納在這個(gè)主題內(nèi)似乎并不恰當(dāng),但事實(shí)上如果你開發(fā)服務(wù)器端的應(yīng)用的話,系統(tǒng)通常都會(huì)在Linux系統(tǒng)上運(yùn)行。它似乎是最這個(gè)主題的書,雖然我不是這個(gè)方面的專家。不管怎樣,都值得探索Linux內(nèi)核發(fā)生了什么。我不建議你一口氣讀完這本書,除非你非常想要這么做–畢竟這是一本寫的很好的書——至少讀一讀關(guān)于進(jìn)程管理和進(jìn)程調(diào)度。還有虛擬操作系統(tǒng)以及I/O的章節(jié)也非常值得瀏覽。
有一些似乎不應(yīng)該歸在這個(gè)主題,但依然非常有用,請(qǐng)閱讀:
《Effective Java | Effective Java 中文版》雖然是基于Java而寫的,但甚至對(duì)Scala來說都非常有用,同樣的,對(duì)于其他基于JVM的語言來說同樣適用。許多對(duì)Java適用的知識(shí)是很有用處的,至少,會(huì)影響你設(shè)計(jì)系統(tǒng)時(shí)的選擇。當(dāng)你評(píng)估第三方庫時(shí),你會(huì)從中獲取許多有用的信息。
《Inside the Machine 》雖然已經(jīng)過時(shí)幾年了,但可能是***的現(xiàn)代處理器架構(gòu)的入門材料。雖然它并沒有涵蓋最前沿的技術(shù),但它是一本非常好的介紹x86處理器以及大的發(fā)展方向(2006年底)的入門資料。這本書不再印刷了,你可以買它的電子版本。
《The Java Virtual Machine Specification | Java虛擬機(jī)規(guī)范(Java SE 7 中文版)》也許不是一本想輕松閱讀的***選擇,但它包含許多非常關(guān)鍵的需要掌握的知識(shí)。
《JSR 133(Java Memory Model) FAQ 》在很長(zhǎng)一段時(shí)間里,它都是獲取關(guān)于Java內(nèi)存模型知識(shí)的***的方法,并且你不需要深入到細(xì)枝末節(jié)。
有了這些資料,你應(yīng)該需要忙一陣了。我非常歡迎關(guān)于其他材料的建議,我希望將來會(huì)增加增補(bǔ)閱讀列表的博文。
其他資源
在 Thomas Lockney 這篇文章的評(píng)論,還有其他網(wǎng)友的資源推薦。
@Staffan Nöteberg 推薦的 JVM 列表。
@Helwyr 推薦了兩個(gè)郵件列表資源:① The Disruptor discussion: http://code.google.com/p/disru… ② Concurrency Interest: http://cs.oswego.edu/mailman/l…
原文鏈接:http://blog.jobbole.com/15342/
【編輯推薦】