深入理解java虚拟机 (一) 第二版
前言:
Java是目前用戶最多、使用范圍最廣的軟件開發技術之一。Java 的技術體系主要由支撐Java程序運行的虛擬機、提供各開發領域接口支持的Java API、 Java編程語言及許多第三方Java框架(如Spring、Struts 等)構成。在國內,有關Java API Java語言語法及第三方框”架的技術資料和書籍非常豐富, 相比之下,有關Java虛擬機的資料卻顯得異常貧乏。.這種狀況在很大程度上是由Java開發技術本身的一-個重要優點導致的:在虛擬機層面隱藏了底層技術的復雜性以及機器與操作系統的差異性。運行程序的物理機器的情況千差萬別,而Java虛擬機則在差萬別的物理機上建立了統= -的運行平臺,實現了在任意- - 臺虛擬機上編譯的程序都能在任何一臺虛擬機上正常運行。這-極大優勢使得Java應用的開發比傳統CLC++應用的開發更高效和快捷,程序員可以把主要精力集中在具體業務邏輯上,而不是物理硬件的兼容性上。在一般情況下, 一個程序員只要了解了必要的Java API、Java 語法,以及學習適當的第三方開發框架,就已經基本能滿足日常開發的需要了,虛擬機會在用戶不知不覺中完成對硬件平臺的兼容及對內存等資源的管理工作。因此,了解虛擬機的運作并不是一-般開發人員必須掌握的知識。然而,凡事都具備兩面性。隨著Java技術的不斷發展,它被應用于越來越多的領域之中。其中-些領域,如電力、金融、通信等,對程序的性能、穩定性和可擴展性方面都有極高的要求。程序很可能在10個人同時使用時完全正常,但是在10 000個人同時使用時就會緩慢、死鎖,甚至崩潰。毫無疑問,要滿足10 000個人同時使用需要更高性能的物理硬件,但是在絕大多數情況下,提升硬件效能無法等比例地提升程序的運作性能和并發能力,甚至可能對程運作狀況完全沒有任何改善。這里面有Java虛擬機的原因:為了達到給所有硬件提供-致的虛擬平臺的目的,犧牲了- -些與硬件相關的性能特性。更重要的是人為原因:如果開發大員不了解虛擬機- -些技術特性的運行原理,就無法寫出最適合虛擬機運行和自優化的代碼。其實,目前商用的高性能Java虛擬桃都提供了相當多的優化特性和調節手段,用于滿足應用程序在實際生產環境中對性能和穩定性的要求。如果只是為了人門學習,讓程序在自己的機器上正常運行,那么這些特性可以說是可有可無的;如果用于生產開發,尤其是企業級生產開發,就迫切需要開發人員中至少有一部分人對虛擬機的特性及調節方法具有很清晰的認識,所以在Java開發體系中,對架構師、系統調優師、高級程序員等角色的需求一直都非常大。學習虛擬機中各種自動運作特性的原理也成為了Java 程序員成長道路上必然會接觸到的- -課。本書可以使讀者以-一種相對輕松的方式學習虛擬機的運作原理,對Java程序員的成長也有較大的幫助。
第2版與第1版的區別
JDK 1.7在2011 年7月28日正式發布,相對于2006年發布的JDK 1.6,新版的JDK有了許多新的特性和改進。本書的第2版也相應地進行了修改和升級,把講解的技術平臺從JDK 1.6提升至JDK 1.7。例如,增加了對JDK 1.7中最新的G1收集器,以及JDK 1.7中JSR-292 knvokeDynamic (對非Java語言的調用支持)的分析講解等內容。在第1版出版后,筆者收到了許多熱心讀者的反饋見,部分讀者提出OpenJDK開源已久,第廠版卻很少有直接分析OpenJDK源碼的內容,有點“視寶山而不見”的感覺。因此,在本書第2版中,筆者特別加強了對這部分內容的講解,其中在第1章中就介紹了如何分析、調試OpenJDK源碼等。在本書后續章節中,不少關于功能點的講解都直接使用OpenJDK中的HotSpot源碼或者JIT編譯器生成的本地代碼作為論據。如何把Java虛擬機原理中許多理論性很強的知識、特性應用于實踐開發,是本書貫穿始終的指。由于筆者希望在本書第2版中進一步加強知識的實踐性,因此增加了許多對處理JVM常見問題技能的講解,包括如何分析GC日志、如何分析JIT編譯器代碼優化過程和生成代碼等。并且,在第1版的基礎上,第2版中進一步增加了若干處理JVM問題的實踐案例供讀者參考。另外,本書第2版還修正了第1版中多處錯的、有歧義的和不完整的描述。有關勘誤信息,可以參考第1版的勘誤頁面(tp://icyfenix.iteye.com/blog/1119214)。
本書面向的讀者
(1)使用Java技術體系的中、高級開發人員
Java虛擬機作為中、高級開發人員必須修煉的知識,有著較高的學習門檻,本書可作為學習虛擬機的優秀教材。
(2)系統調優師
系統調優師是近幾年才興起的職業,本書中的大量案例、代碼和調優實戰將會對系統調優師的日常工作有直接的幫助。
(3)系統架構師
保障系統的性能、并發和伸縮等能力是系統架構師的主要職責之-一,而這部分與噓擬機的運作密不可分,本書可以作為他們制定應用系統底層框架的參考資料。
?
?
?
總結
以上是生活随笔為你收集整理的深入理解java虚拟机 (一) 第二版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 目前计算机应用最广泛的区域是,自考《计算
- 下一篇: Android 开发, Android