愛伊米

java必讀書籍_最佳5本Java效能調優書籍–精選,必讀

為什麼Java開發人員應該閱讀有關效能調優的書?

當我很久以前第一次面對這個問題時,我以為以後會做,但是我很長一段時間都沒有回過頭來。 僅當我在用Java編寫的任務關鍵型伺服器端財務應用程式中遇到嚴重的效能和可伸縮性問題時,我才意識到自己缺乏對效能測量,除錯和查詢瓶頸的知識,這是我的錯誤。

的確,當您真正需要它時,您將學習最多,但是那些時間並不是學習基礎知識的最佳時間,實際上,這些時間是應用並糾正您的誤解的時間。 這就是為什麼我與所有Java程式設計師共享這些Java效能書籍 ,並建議他們花一些時間至少閱讀一本完整的書籍。

請記住,有關效能調優的知識是高階Java開發人員的重要方面之一,可以使您與眾不同。 自將Java引入20年前以來,它就一直因其速度慢和效能不足而受到批評。 今天,就本地語言的效能而言,我認為Java不會落後。 鑑於Java具有使用JIT(及時編譯器)本地編譯熱程式碼的能力,它幾乎可以與用C和C ++編寫的本地應用程式相提並論,但是可以透過遵循最佳實踐,避免常見的效能陷阱並使用最新工具來完成很多工作和技術。

在本文中,我將介紹有關Java效能的不錯的書,它們不僅會教您測量什麼,如何測量,而且還將解釋這些問題背後的基礎知識和概念。 您不僅將瞭解執行Java應用程式的系統和JVM,還將學習如何使用Java API編寫更快的程式碼。

1。 Java Performance權威指南Scott Oaks

java必讀書籍_最佳5本Java效能調優書籍–精選,必讀

一言以蔽之,這是當前有關Java效能最佳化的最佳書籍 。 造成這種情況的原因有很多。要學習效能調整,您應該瞭解工具,過程,選項,最重要的是避免常見的效能陷阱 。 本書在這一點上得分很高,它的章節介紹了Java效能工程師應該意識到的所有工具,包括Java 7u40中新增的工具,例如Flight Recorder和Java Mission Control。 它也有很好的章節介紹各種垃圾收集演算法,例如併發標記掃描(CMS)和G1垃圾收集器。 您將學習它們在不同條件下如何工作,如何監視它們以及如何對其進行調整。 它還包括一整章有關堆分析和最佳化的內容。 這將教您一些常見的知識,例如如何用Java進行堆轉儲和直方圖,然後介紹許多減少堆記憶體佔用的方法 。 它還有一章介紹JDBC和JPA效能。 關鍵點在於,它告訴您如何選擇適當的JDBC / JPA方法可能遠遠超過了SQL查詢調整帶來的收益。 同樣,它有一章完整的章節介紹了有關多執行緒問題,陷阱和對效能的影響。 它包括高階主題,例如ForkJoinPool和Java 8 Streams。 它還基於同步和錯誤共享,調整JVM執行緒(例如執行緒堆疊大小),配置有偏鎖,執行緒優先順序和執行緒旋轉的成本。 順便說一下,到目前為止還沒有介紹什麼,本書中最喜歡的II是第12章。本章介紹了一些經典的Java核心調優技巧及其影響。 這包括緩衝的I / O,類載入,隨機數生成,JNI,異常,字串效能,日誌記錄,Java Collections API,Java 8 lambda和vs匿名類,最後是Java 8流和多個過濾器效能。 這實際上是我閱讀的第一章,我愛上了它的內容和風格。 如果您想自己快速評估本書,建議您從本章開始。 它還基於Java EE效能,解釋了XML和JSON解析以及物件序列化的可能問題。

2。 Java Performance by Binu John,查理·亨特(Charlie Hunt)

java必讀書籍_最佳5本Java效能調優書籍–精選,必讀

長期以來,這是我最喜歡的Java效能書,直到最近閱讀Scott Oaks撰寫的Java Performance The Definitive Guide。 這本書非常相似,就像從頂部取代它的那本書一樣。 它的章節解釋瞭如何進行效能測量,並解釋了測量CPU,記憶體和IO所需的工具。 有關解釋垃圾收集工作原理的章節,不同的GC演算法(例如序列垃圾收集器與並行垃圾收集器,併發標記掃描收集器等)。Binu John和Charlie Hunt在如何構造實驗以發現最佳化機會,解釋結果並採取行動方面做得非常出色。有效的行動。 為了給您一些信譽並暗示您在本書中可以期望得到的結果,Charlie Hunt是Oracle的JVM效能首席工程師。 他負責改善HotSpot JVM和Java SE類庫的效能。 他還參與了改善Oracle GlassFish和Oracle WebLogic Server的效能的工作,Binu John是Ning,Inc。的高階效能工程師,他致力於改善Ning平臺的效能和可伸縮性,以支援數百萬的頁面瀏覽量。每月。 在此之前,他在Sun Microsystems工作了十多年,從事與Java有關的效能問題,並在Sun的Enterprise Java Performance團隊中任職。 如果您還沒有閱讀過有關Java效能調優的書,並且想為解決效能問題打下良好的基礎,那麼這本書是您可以購買的書。 每花一分錢都是值得的。

3。 系統性能:企業與雲作者:Brendan Gregg

java必讀書籍_最佳5本Java效能調優書籍–精選,必讀

系統性能分析是所有計算機使用者的一項重要技能,無論您是要了解膝上型電腦執行緩慢的原因,還是要最佳化大規模生產環境的效能。 它是對作業系統(核心)和應用程式效能的研究,本書將告訴您所有您需要了解的有關Linux效能監視和調整的知識。 程式設計師從最佳化演算法,資料結構,JVM, 垃圾收集器開始,但是最終它們達到了系統性能發揮作用的地步。 您可能想知道為什麼磁碟操作在開發裝置上如此之快,但卻成為生產裝置上的主要問題,CPU快取如何對您的應用程式產生如此大的影響,如何利用L1,L2和L3快取以及物理記憶體在您的機器上可用。 我認為,這是每位程式設計師的書,不僅是Java程式設計師的書。 對於真正對效能調優感興趣的任何開發人員來說,瞭解系統的工作方式,分頁,交換和虛擬記憶體的工作方式,CPU如何從磁盤獲取資料,不同型別的磁碟如何對受IO繫結的Java應用程式產生深遠影響都是非常重要的。 我經常說, 學習JVM,但現在我可以說您必須非常瞭解您的系統。 知道作業系統的基本知識,系統呼叫,記憶體,CPU,網路和磁碟IO肯定會走很長一段路,並可以幫助您以任何程式語言(包括Java)編寫高效能應用程式。

4。 Jack Shirazi編寫的Java效能調優

java必讀書籍_最佳5本Java效能調優書籍–精選,必讀

這是一本有關Java效能調整和編寫在Java中執行速度更快的程式碼的主要書籍之一。 傑克第一次寫這本書時,幾乎沒有可用的東西。 甚至本書的第二版都已經有11年的歷史了,大約在2003年發行。為什麼我會推薦11年前寫的東西呢? 因為它包含一些建議,實踐和技術,這些建議,實踐和技術即使在今天也是永恆且值得了解的。 儘管您不能按照本書的原始精神來學習本書,但應始終牢記,本書中提到的大多數內容已在後續的Java版本中得到解決。 最好的建議是在第一章中,這本書告訴我Java應用程式的效能將受到CPU,記憶體和IO(磁碟和網路)這三個主要因素的限制,令人驚訝的是,許多知道如何使用事件探查器的開發人員不知道這個基本事實。 我讀過的經典建議“不要調整您不需要調整的內容”是最好的效能建議。 您可以看一下本書中給出的效能檢查表,以瞭解什麼是重要的,什麼不是什麼。 儘管這本書還介紹了許多效能分析工具,但是我建議使用諸如Scott Performances撰寫的Java Performance The Definitive Guide和Binu John撰寫的Java Performance這樣的最新書籍,Charlie Hunt擁有更多最新列表。 您應該記住,本書不僅僅涉及JDK 1。4。0。 但是您應該檢視第4至12章,其中涵蓋了可應用於Java程式碼的各種效能提示和技術。

Jack還擁有一個站點http://www。javaperformancetuning。com/ ,該站點對於學習Java開發人員的效能調優非常有用。

5。 Java效能和可伸縮性:Henry H。 Liu的定量方法

java必讀書籍_最佳5本Java效能調優書籍–精選,必讀

在介紹這本書之前,讓我介紹作者,他是PHD,在Vmware工作,專門研究高效能和可伸縮的企業Java應用程式,但是我認為他以“軟體效能和可伸縮性:定量方法”而著稱。 。 您可以在本書中看到他早期暢銷書的更專業版本。 顧名思義,這本書專注於Java應用程式的效能和可伸縮性。 這本書對Java開發人員,架構師甚至管理人員都有好處。 它分為兩個主要部分,第一部分介紹Java效能和可伸縮性的基礎知識,第二部分介紹提高效能和可伸縮性的實踐。 基礎部分包含四章,每章分別探討軟體程式,計算機硬體和Java虛擬機器的可伸縮性。 第二部分包含各章,探討從32位到64位如何影響 Java應用程式的效能和可伸縮性。 第6章可能是最重要的一章,它解釋瞭如何調整Java以獲得最佳的效能和可伸縮性。 它介紹了方法,實踐,工具和調整Java應用程式時要牢記可伸縮性。 第7章是另一個重要的章節,它解釋了設計,演算法和實現如何影響任何Java應用程式的效能和可伸縮性。 它還介紹瞭如何執行瓶頸分析。 好在他用示例程式解釋了所有這些,因此您可以在閱讀時遵循準則。 總體而言,對於Java效能工程師來說,這是一本非常獨特的好書,如果您喜歡閱讀多本書籍以獲取洞見,那麼您可以將其與Java Performance The Definitive Guide and System Performance:Enterprise and Cloud一起閱讀 。

6。 經驗豐富的Java開發人員

java必讀書籍_最佳5本Java效能調優書籍–精選,必讀

這是給讀者的好書,我不會說這本書只關注Java效能調優,但我會說這是每個現代Java開發人員都應該擁有的書。 Ben Evans和Martjin Verburg不需要任何介紹。 他們是著名的Java專家和jClarity的創始人, jClarity有望解決雲環境中的效能問題。 他們在Java方面擁有多年的經驗,這在他們的《 The Well-Grounded Java Developer:Java 7的重要技術和多語言程式設計》中得到了體現。 我在2012年首次接觸這本書,在閱讀了示例章節之後,我被說服了買這本書。 這是現代Java開發人員必讀的書。 它說明了Java上的新更改,包括JDK 7中的更改,例如try-with-resources,NIO2。0和併發更改。 但最重要的是,它解釋了為什麼向JVM新增新功能如此昂貴。 新增新的庫擴充套件(例如fork / join或語法糖,如switch-on-string)相對容易,但新增JVM指令(如invokedynamic)則非常昂貴。 關於這本書的最好的事情可能是它不僅會停留在Java上,而且還會進一步介紹現代JVM語言,例如Scala,Clojure和Groovy。 它使用新的JVM語言和現代方法來接觸函數語言程式設計,以測試,構建和有爭議的Java應用程式整合。

這就是所有優秀的Java效能調優書籍的清單 。 我已經推薦了很多有效的Java知識,並且作為一本面向Java開發人員的書,但同時我也發現您應該有一本專門針對Java效能調優的書。 經過幾年的Java工作和經驗,您將不可避免地面臨效能挑戰,這時您應該至少了解發現瓶頸和提高Java應用程式效能的基本知識,工具和過程。 因此,如果您還沒有閱讀任何Java效能書籍,那麼這是閱讀該書的時候。