JVM程式設計師的閱讀清單

唐小娟發表於2012-03-22

前些天,我發現我和幾個同行進行的一系列討論中,有部分話題是關於在Linux系統JVM上執行大量執行緒的效能問題。我並不是說我是這個主題的專家,但我曾經以為掌握得很好的一些知識點卻並沒有我想的那麼無懈可擊。之後,我閱讀了一些別人推薦的有關這個主題的書,我不得不承認我原來很多知識點都不知道。這樣的情況經常發生,我通常會記下來少數一些我覺得值得研究的資源。

所以,這裡是我推薦的閱讀列表,給那些正在學習基於JVM開發的程式設計師們閱讀,他們需要了解環境的特性,尤其是當遇到和效能以及同步相關的問題時。老實說,我也不能說我閱讀了所有的材料。但經過上面提到的和同事的對話後,我決定下功夫去彌補我知識體系上的缺陷,儘可能多的閱讀下面每一本書。並且我認為如果你想學會某一門技藝的話,你必須持續不斷的學習和鑽研。

● 《Jave Performance》是這個領域的一本新書,十月份剛出版,卻一本不可多得的好書。它涵蓋了工具和技術(效能測評,建立基準,效能除錯等等),也涵蓋了更深的但很少被考慮的技術(如作業系統層次的工具、JIT、垃圾回收等等),甚至包含了處理基於JAX-RS的網路應用。

java performance

● 《Java Concurrency in Practice | Java併發程式設計實戰 》對於任何一個想要了解Java標準庫中內建的併發基礎與結構的程式設計師來說,具有很好的指導作用。即使你不直接處理併發,你也需要了解這本書中闡述的原理。

Java Concurrency in Practice

● 《What Every Programmer Should Know About Memory 》(這裡有HTML版本)是一本關於系統記憶體的系統介紹。你將會學到比你想象得多得多的知識,但也是個痛苦的過程。相信我 ;~)

● 《Linux Kernel Development (3rd Edition) 》歸納在這個主題內似乎並不恰當,但事實上如果你開發伺服器端的應用的話,系統通常都會在Linux系統上執行。它似乎是最這個主題的書,雖然我不是這個方面的專家。不管怎樣,都值得探索Linux核心發生了什麼。我不建議你一口氣讀完這本書,除非你非常想要這麼做–畢竟這是一本寫的很好的書——至少讀一讀關於程式管理和程式排程。還有虛擬作業系統以及I/O的章節也非常值得瀏覽。

有一些似乎不應該歸在這個主題,但依然非常有用,請閱讀:

● 《Effective Java  |  Effective Java 中文版》雖然是基於Java而寫的,但甚至對Scala來說都非常有用,同樣的,對於其他基於JVM的語言來說同樣適用。許多對Java適用的知識是很有用處的,至少,會影響你設計系統時的選擇。當你評估第三方庫時,你會從中獲取許多有用的資訊。

● 《Inside the Machine 》雖然已經過時幾年了,但可能是最好的現代處理器架構的入門材料。雖然它並沒有涵蓋最前沿的技術,但它是一本非常好的介紹x86處理器以及大的發展方向(2006年底)的入門資料。這本書不再印刷了,你可以買它的電子版本。

● 《The Java Virtual Machine Specification | Java虛擬機器規範(Java SE 7 中文版》也許不是一本想輕鬆閱讀的第一選擇,但它包含許多非常關鍵的需要掌握的知識。

● 《JSR 133(Java Memory Model) FAQ 》在很長一段時間裡,它都是獲取關於Java記憶體模型知識的最好的方法,並且你不需要深入到細枝末節。

有了這些資料,你應該需要忙一陣了。我非常歡迎關於其他材料的建議,我希望將來會增加增補閱讀列表的博文。

 

其他資源

在 Thomas Lockney 這篇文章的評論,還有其他網友的資源推薦。

@Staffan Nöteberg 推薦的 JVM 列表

@Helwyr 推薦了兩個郵件列表資源:① The Disruptor discussion: http://code.google.com/p/disru… ②  Concurrency Interest: http://cs.oswego.edu/mailman/l…

 

英文原文:Thomas Lockney    編譯:伯樂線上- 唐小娟

【如需轉載,請標註並保留原文連結、譯文連結和譯者等資訊,謝謝合作!】

 

相關文章