JVM系列隨筆主要是對《深入理解Java虛擬機:JVM高級特性與最佳實踐 第2版》的學習總結
簡述
Java優點:
- 一次編寫,到處運行
- 安全的內存管理和訪問機制
- 熱點代碼檢測和運行時編譯及優化
- 完善的應用程序接口
- 無數的第三方類庫等
廣義上講,能夠運行於Java虛擬機上的語言及相關程序都屬於Java技術體系。
傳統意義上講,Sun定義的Java技術體系包括:
-
Java程序設計語言
-
各種硬件平台上的Java虛擬機
-
Class文件格式
-
Java API類庫
-
來自商業機構和開源社區的第三方Java類庫
JDK是支持Java開發的最小環境,包括Java程序設計語言,Java虛擬機和Java API類庫三部分
JRE是支持Java運行的標准環境,包括Java API中Java SE API和Java虛擬機
下圖為Java技術體系所包含的內容[1]

主流JVM
- Sun HotSpot VM
- BEA JRocket VM
- IBM J9 VM
Java技術未來
模塊化
- Java SE動態組件支持(Dynamic Component Support for Java SE),即OSGI
- OpenJDK的Jigsaw子項目推動Java模塊化
混合語言
虛擬機不和包括Java在內的任何語言綁定,它只與Class文件關聯。因此只要符合Java虛擬機規范,任何一門語言編譯出的Class文件都是可以被接受的。
目前在JVM上運行的腳本語言Top5:Groovy,JRuby,Scala,Fantom,Jython
多核並行
JDK1.5引入的java.util.concurrent包實現了粗粒度的並發框架,JDK1.7加入的java.util.concurrent.forkjoin對這一框架進行了重要擴充。
OpenJDK子項目Sumatra利用GPU和APU運算能力,提供Java語言層面的API支持
Hadoop, Scala, Clojure等
進一步豐富的語法
- 自動裝箱、泛型、動態注解、枚舉、可變長參數、遍歷循環等語法
- OpenJDK子項目Coin用來收集處理Java語法細節修改
64位虛擬機
64位虛擬機相對於32位存在指針膨脹和各種數據類型對齊問題,多消耗額外10%-30%的內存。JDK 1.6提供了-XX:+UserCompressedOops用於普通對象指針壓縮。但是毫無疑問,主流虛擬機終將會發展至64位。
