眾多業內大佬推薦閱讀!!《Java效能優化實踐:JVM調優策略、工具與技巧》已上市~~

圖靈小悅發表於2021-01-08

沒有捷徑可走的 Java 效能優化

多年來,用 Google 搜尋 Java performance tuning,出現的 3 篇最熱門文章之一是於 1997 年到 1998 年左右發表的文章,這篇文章在 Google 搜尋引擎出現早期就被納入其索引中。之所以一直在搜尋結果中排在前列,是因為其初始排名比較高,帶來了很多訪問,而這些訪問又反過來提升了其排名。

但是,該頁面上提供的建議已經完全過時,不再成立,很多情況下甚至對應用程式有害。然而,因為該頁面在搜尋結果中的有利位置,很多開發人員能看到它,所以他們很有可能受到這些糟糕建議的影響。

同理,如今朋友圈廣泛傳播一些諸如「效能優化寶典」「大廠優化祕籍」「X 大優化技巧」之類的文章,被一些剛開始接觸 Java 效能優化的讀者奉為圭臬,而實際情況是什麼呢?

  • JVM 沒有神奇的開關,讓你的程式碼變得“更快”
  • 沒有讓 Java 執行更快的“祕訣與技巧”
  • 沒有對你隱藏的祕密演算法

如果有一本關於 Java 效能優化的書一開始就這樣跟你兜底,你應該認真地讀讀,因為作者們看起來相當實在。他們繼續,這不是一本程式碼效能技巧手冊,相反,聚焦於好的效能工程所涉及的方方面面:

  • 整個軟體生命週期內的效能方法論
  • 適用於效能的測試理論
  • 度量、統計和工具
  • 分析技能(包括系統和資料)
  • 底層的技術與機制

那麼書中有沒有直接上手的程式碼呢?有是有,但是,作者說了,用之前你要三思:書的後半部分會引入一些啟發式的程式碼級優化技術,不過這些技術都附帶了開發人員在使用之前應該注意的警告和權衡。

持有這種理念的 3 位作者都是資深 Java 工程師(有兩位 Java Champion 得主)。他們的基本認識是——效能優化是一門實驗科學:JVM 效能調優是技術、方法論、可測的量和工具的綜合。它的目的是以系統所有者或使用者所期望的方式產生可以測量的輸出。

更進一步,如果考慮到人的因素,效能優化是堅實的經驗主義和軟性的人類心理學的奇異組合。重點在於,一方面是可觀測指標的絕對數字,另一方面是終端使用者和干係人如何看待這些數字。而這本書就是要聚焦如何解決這一明顯的悖論。

光是看到這裡,我覺得你可以考慮入手這本書了,一本好書,作者持有的基本理念就會讓你歡呼雀躍。

enter image description here

| 圖書特色

  • Java 效能優化領域經典作品
  • Amazon 4.5 星好評圖書
  • 不僅調優,還有編碼相關內容,涉及 JIT 編譯、語言效能等

作譯者簡介
本傑明· J. 埃文斯(Benjamin J. Evans)
初創公司 jClarity 聯合創始人和技術 Fellow,獲得過 Java Champion 榮譽和 JavaOne Rockstar 獎,《Java程式設計師修煉之道》合著者。
詹姆斯·高夫(James Gough)
Java 開發者和技術圖書作者,任職於摩根士丹利,專注構建面向客戶的技術。
克里斯·紐蘭(Chris Newland)
JITWatch 專案作者,Java Champion 榮譽得主,ADVFN 高階開發者和團隊負責人,擅長使用 Java 來處理實時的股市資料。
譯者 | 曾波
網際網路架構師,擁有 13 年網際網路從業經驗,曾任職於微軟、什麼值得買、京東金融、鵬博士電信傳媒集團,曾參與多家公司的技術團隊從建立到成熟的過程,主持實施了重大技術決策和技術落地,在大規模複雜系統架構和技術管理方面擁有豐富的實踐經驗。

本書從實驗科學的角度探討了Java 效能優化的方方面面,重點闡述了最新的實用 JVM 效能調優策略、工具和技巧。通過本書,我們不僅可以瞭解 Java 原理和技術如何充分利用現代硬體和作業系統、衡量 Java 效能的陷阱以及微基準測試的弊端有哪些,還能深入研究可能使團隊煩惱的幾種效能測試和常見反模式、JVM 垃圾收集、JIT 編譯和 Java 語言效能技術等。

譯者曾波特意在本書出版之時送給讀者一段話:

2018 年 8 月,不經意間翻閱了一本名為 Optimizing Java: Practical Techniques for Improved Performance Tuning 的書,震驚於書中描述的系統性 Java 效能優化知識,於是迫切希望能將 3 位作者的理念與方法傳達給國內的 Javaer。現在《Java效能優化實踐:JVM調優策略、工具與技巧》中文版已經上架,希望這本書能夠轉化為你的效能調優利器,為專案帶去真正的價值。對此,我深信不疑,畢竟,效能優化是一個常談常新的話題,而這本書可以歷經時間的考驗。

業內大佬傾力推薦

那具體說來,這本書寫得怎麼樣呢?在本書還沒有出版之前,國內外 Java 領域的不少大佬就搶讀了這本書,他們怎麼看?他們在解決效能優化問題的過程中最在意哪些因素?他們是如何切入問題的?接下來,我們們來一睹他們在這個問題上的洞見。

推薦序作者 Charlie Nutter

紅帽中介軟體首席軟體工程師、為英文版作序的 Charlie Nutter,以一個特別的視角回顧了 Java 技術發展的歷程,為我們解決如今的效能問題指明瞭方向:

而現在,效能問題的答案是瞭解你的工具。通常這意味著你不但要了解 Java 語言是如何工作的,還要知道 JVM 類庫、記憶體、編譯器、垃圾收集器和應用程式執行所在的硬體是如何互動的。在我從事 JRuby 專案的工作中,我學到一個有關 JVM 的不變的真理:所有的效能問題都沒有單一的解決方案,而是多種解決方案的組合。技巧就是找到那些方案,並把最能滿足要求的拼湊起來。現在你有了一個應對效能之戰的祕密武器,就是你要閱讀的這本書。

推薦序作者臧秀濤

與本書作譯者都頗有淵源的 InfoQ 技術大會主編臧秀濤,既對圖書理念進行了透徹分析,又點出了部分讀者的學習誤區,最後強調了效能工具的重要性:

我感覺本書的最大價值在於作者們所要傳達的理念。在效能調優方面,沒有任何靈丹妙藥。任何效能決策,都要通過合理的效能測試來檢驗。本書不止一次提到,讀者不能盲目使用書中結論,如果要在自己的專案中應用,必須親自通過實驗來檢測。
本書有些章節經常讓人會心一笑,比如在第 4 章講到效能反模式的地方,有一條叫“按照坊間傳說調優”。大家可能有過這種經驗,時不時就會在朋友圈看到有人轉發“優化 Java 的 xxx 條規則”,諸如“儘量重用物件”“儘量用 final”之類,倒是簡單好記,但細究起來,很多是十多年前的“野路子”,沒有明確的適用範圍,彷彿放之四海而皆準,可嘆這種坊間傳說還頗有市場。希望本書能夠盪滌這種風氣。
本書提到的很多效能工具也是讀者應該重點關注的。像 JITWatch 以及各種剖析工具,本書分門別類給出了介紹和建議,對於讀者深入理解 JVM 和定位效能問題的根源都極具價值。建議讀者認真研究,也將它們放入自己的工具箱中,使其成為效能調優的利器。
紙上得來終覺淺,絕知此事要躬行。期待本書能給大家帶來真正的價值。

推薦序作者江南白衣

唯品會架構專家江南白衣(肖樺),點評了本書的核心價值,強調了掌握底層原理的重要性,並以極為“詩意”的大串燒列出了大家常用的重要工具:

如果光看書名,特別是英文版書名,大家可能會覺得這是一本 recipes、cookbooks、tips、tricks 以及各種零零碎碎解決特定問題的知識點大雜燴,但翻開目錄,可以看出 3 位合著者很用心地給大家展示了一個關於 Java 效能優化的更完整的知識框架。
借用書中的一句話:“要成為一名賽車手,你不必成為工程師,但是一定要有機械共鳴。”“機械共鳴”這一說法來自偉大的賽車手 Jackie Stewart,他曾 3 次獲得世界汽車聯合會一級方程式錦標賽冠軍。他相信最佳車手對機械如何工作有足夠的理解,所以能與賽車協調一致。你不必熟讀 The Java Language Specification,不必成為 R 大(R 大在我們這群人中就是神),但對於 JVM,必須知道它如何編譯、如何執行、如何垃圾收集。
本書除了對原理進行描述外,還對工具做了介紹。從我見過最詳盡的 JMH 介紹到 JITWatch,甚至 jHiccup 都在本書中出現了,而在看到作者們列出 JProfiler 和 YourKit 後,將它們大手一揮歸到傳統 Profiler 中去,然後 Async Profiler 的登場,讓我放下了心。
祝每位 Java 程式設計師讀完本書後,都一邊享受 Java 成熟的類庫,一邊感受 JIT 不輸於 C++/ Rust 們 AOT 預編譯的硬氣,一邊讚美最新 JDK 的垃圾收集工具 ZGC,一邊等待 JVM 協程專案 Loom 的落地,事有不諧時一起拿出火焰圖工具 Async Profiler 和線上診斷工具 Arthas 找瓶頸,最後都寫出自己效能燦爛的程式碼。

推薦者楊衛華

微博研發副總經理、中國計算機學會 CCF TF架構 SIG 主席楊衛華(Tim Yang),言簡意賅地指出了效能優化的重要性:

架構師非常注重服務穩定,重點之一就是保障 Java 體系的效能,本書是深入瞭解效能不錯的參考指南。

推薦者你假笨

IT 系統穩定性保障廠商 PerfMa CEO、知名效能優化領域專家你假笨(寒泉子),突出了“要做好效能優化,技術原理和方法論兩手都要硬”:

效能優化是一個永恆的話題。Java 作為使用最廣的一門語言,在社群生態更是積攢了非常多寶貴的經驗。如果既能懂系統,又懂技術原理,對效能調優的幫助將是非常大的。本書從技術原理和方法論的角度闡述了Java 效能的關鍵點,值得一讀。

推薦者李鑫

天弘基金移動平臺技術總監兼首席架構師、《微服務治理:體系、架構及實踐》作者李鑫,提到了本書豐富的優化策略及實踐可幫你直達本源:

這本關於 Java 效能的優秀譯作提供了豐富的優化策略和實踐手段,能助你撥開技術迷霧,直達本源,是有志於深耕 Java 效能領域的朋友的不二之選!

推薦者吳晟

tetrate.io 創始工程師、Apache SkyWalking 創始人、專案 VP 吳晟,幫助大家提取出了實踐效能優化應該掌握的多個維度的知識:

理解 Java 效能優化理論和方法,對保障線上服務效能起著至關重要的作用。本書從 JVM 內部原理、測試和優化方法、JVM 的未來方向,多緯度介紹了效能優化的方法與理論。推薦廣泛的 Java 開發者和 JRE 使用者閱讀學習。

推薦者張亮

京東數科數字技術中心架構專家,Apache ShardingSphere、ElasticJob 創始人 & PMC Chair 張亮,特別指出了效能對於大型系統的重要性:

合抱之木,生於毫末。沒有夯實基礎的沉澱,不足以成長為參天大樹。
效能是衡量大型系統的重要指標,也是識別一個技術從業者良莠的標準。本書著墨於效能優化,並在博大精深的 Java 體系中,系統性地將其完整呈現。
譯者通過自身多年的積累,將書中內容與自身領悟相結合,奉獻了一本中文領域的優秀基礎類技術翻譯作品。
本書適合有志於向更深層次 Java 技術邁進的從業者閱讀。

推薦者趙雲霄

京東零售技術與資料中臺高階技術專家趙雲霄,道出了 Java 調優神祕晦澀的現狀,以及本書如何有效幫助解決這個問題:

長久以來,對於 Java 程式的調優,都由團隊中那些經驗豐富的大牛完成。深深地依賴個人經驗以及充滿不確定性的各種嘗試,留下的也只是一些案例形式的記錄,很難有效地指導其他人進步。《Java效能優化實踐》這本書,比較完美地將 Java 程式調優工作理論化,並在理論的基礎上介紹了可選擇的工具,讓 Java 調優工作不再神祕晦澀。

推薦者楊曉峰

騰訊專家工程師、JVM 研發負責人,中國計算機學會(CCF)系統軟體專委委員,OpenJDK Committer 楊曉峰,強調了本書 3 位作者豐富的行業經驗和一線生產調優經驗:

本書是不可多得的經典著作,由 3 位久負盛名、具備深刻行業經驗的 Java Champion 出品,系統性闡述了 Java 應用效能的方方面面,以及效能評估分析的方法論與工具,尤其非常難得地提供了最新的 JVM 領域知識和一線生產調優經驗。本書深度恰到好處,體系化的內容非常適合中高階 Java 工程師、架構師或者效能工程師的工作學習進階需求。

推薦者葛勝利

京東泰國 CTO 葛勝利(Victor)闡述了這本書的核心板塊和內容特色:

本書專注於 Java 程式優化方法,深度剖析 JVM 原理:從底層的作業系統及 JVM 的原理與監控方法,到效能測試技巧,再到效能優化實踐。內容從淺到深,具有層次性和連貫性。本書帶你瞭解 JVM 底層機制,改善程式的執行效能。無論你是剛接觸 Java 的開發者還是資深的架構師,都能從中有所收穫。

推薦者王啟榮

北京力碼科技聯合創始人兼 CIO 王啟榮指出了這本書的實戰性和經典性:

本書內容由淺入深、從不同的層面來講解 Java 效能優化,圖文並茂、案例豐富,能夠讓讀者知其然知其所以然,對後續工作有很強的指導性,適合中、高階以上開發人員反覆研讀。

推薦者孫玄

奈學教育創始人 & CEO,前 58 集團技術委員會主席孫玄強調了本書對於效能優化哲學本質的展現:

本書是 Java 效能領域的實踐類好書,深入淺出剖析了 Java 效能優化的生態狀況,方便同學們真正掌握效能優化的哲學本質,從而在面向不同業務場景時,能夠給出優雅的效能優化解決方案,真正達到為企業降本增效的目的。
譯者曾波一直從事 Java 效能研發工作,是效能領域絕對的資深專家,由他翻譯這本書,相信會給大家帶來更完善的閱讀體驗。

推薦者朱忠華

《深入理解Kafka:核心設計與實踐原理》《RabbitMQ實戰指南》作者朱忠華指出瞭如今 Java 效能問題的普遍性:

Java 效能優化是一個老生常談的話題,尤其是在“糙快猛”的網際網路開發模式大行其道的今天,隨著系統訪問量的日益增加和程式碼的臃腫,各種效能問題開始紛至沓來。本書從各個角度,由表及裡地為讀者透析 Java 效能優化的本質,相信大家在讀完本書之後會對此有一個更深層次的認知。

推薦者王曄倞

好買財富架構總監、公眾號「頭哥侃碼」作者王曄倞突出了效能問題的嚴重性,以及這本書可以提供的幫助:

在日常工作中我們常說“讓 Java 應用程式執行是一回事,但讓它們跑得快就是另外一回事”。在物件導向的環境中,效能問題就像來勢凶猛的野獸。
通過學習這本書,讀者們可以深入淺出剖析 Java 效能優化生態,並從原理、監控、測試技巧等不同維度尋找最優化的實踐方案,從而制服野獸。
無論你是老司機還是初學者,相信都能在書中找到你需要的。

推薦者張開濤

《億級流量網站架構核心技術》作者張開濤著重強調了業務複雜性、系統穩定性為效能優化帶來的難度:

業務複雜性越高,伴隨帶來的系統穩定性就越脆弱,效能要求也越高,非常小的一個效能問題就可能導致服務叢集滾雪球式地雪崩。而業務複雜性、系統複雜性、環境複雜性等都會導致效能優化這件事情並沒那麼簡單。測試環境效能壓測非常好,但是一到線上各種問題就頻發,到底哪裡出了問題呢?本書體系化地總結了一套 Java 效能優化的方法論,大家按照本書實踐,在效能優化上可以達到事半功倍的效果。

推薦者肖宇

分散式事務開源專案 Hmily、閘道器開源專案 Soul 創始人,Apache ShardingSphere Committer 肖宇從原書設計和譯文角度指出了這本書的難能可貴之處:

《Java效能優化實踐》是每個 Java 程式設計師不可多得的必讀經典之作。而曾波的翻譯,簡單清晰,詞文準確,大道至簡。本書降低了國內讀者的語言學習成本,為大家解決效能問題帶來了福音。

諸位老師雖大多是三言兩語,但已有畫龍點睛之效。如果你有棘手的 Java 效能問題需要解決,或者你只是想深入理解 Java 技術,這本書值得常備手邊。

相關文章