
文章插圖
文章插圖
1.前言Java 不僅僅是一門編程語言,還是一個由一系列計算機軟件和規范組成的技術體系 。
Java 的廣告詞為 “一次編寫,到處運行”,之所以能夠做到”跨平臺”,是因為每個平臺上不同的虛擬機屏蔽了硬件的差異,而 Java 程序則是運行在虛擬機之上的 。
本文簡要介紹 Java 技術體系及 Java 虛擬機(Java Virtual Machine, JVM)的相關發展歷程,后文再進一步分析 Java 虛擬機的詳細內容 。
PS: 本文及接下來的 JVM 筆記內容主要來自周志明《深入理解 Java 虛擬機(第3版)》 。2. Java技術體系廣義上講,Kotlin、Groovy、JRuby 等運行于 Java 虛擬機上的編程語言及其相關程序都屬于 Java 技術體系 。
而從傳統意義上來看,JCP 官方定義的 Java 技術體系主要包括:
Java 程序設計語言各種硬件平臺上的 Java 虛擬機Class 文件格式Java 類庫 API商業機構和開源社區的第三方 Java 類庫
其中 Java 程序設計語言、Java 虛擬機、Java 類庫三部分統稱為 JDK(Java Development Kit),JDK 是支持 Java 程序開發的最小環境 。
Java 類庫 API 中的 Java SE API 子集和 Java 虛擬機統稱為 JRE(Java Runtime Environment),JRE 是支持 Java 程序運行的標準環境 。
PS: JCP 全稱 Java Community Process,即 Java 社區,由業界多家技術巨頭組成的社區,用于定義和發展 Java 的技術規范 。Java 技術體系包含的內容如下:

文章插圖

文章插圖
3. JVM家族“Java 虛擬機” 只是一個概念,它的實現產品眾多,下面簡要介紹其發展歷程 。
Sun Classic/Exact VMClass VM (JDK 1.0)世界上第一款商用 Java 虛擬機純解釋器方式執行 Java 代碼對象查找基于句柄Exact VM (JDK 1.2)準確式內存管理:虛擬機可以知道內存中某個位置的數據具體類型
HotSpot VMSun/OracleJDK 和 OpenJDK 中默認虛擬機目前使用范圍最廣的 Java 虛擬機
由于 HotSpot 虛擬機是目前使用最廣泛的,而且是目前 OracleJDK 和 OpenJDK 的默認虛擬機,后文的內容分析主要是針對該虛擬機 。
終端執行 java -version 命令如下(不同機器會有所不同,此處僅供參考):
$ java -versionjava version "1.8.0_191"Java(TM) SE Runtime Environment (build 1.8.0_191-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)這里的 HotSpot(TM) 64-Bit Server VM 指的就是 HotSpot 虛擬機 。Mobile/Embedded VMJava ME 虛擬機
BEA JRockit/IBM J9 VM這兩個虛擬機曾與 HotSpot 虛擬機并稱”三大商業 Java 虛擬機” 。
JRockit專注于服務端應用不含解釋器,全部代碼都由即時編譯器編譯后執行J9 VM職責分離與模塊化優于 HotSpot VM
BEA Liquid VM/Azul VM與特定硬件平臺綁定、軟硬件配合的專有虛擬機
Apache Harmony/Google Android Dalvik VM這兩者是 “虛擬機”,而非 “Java 虛擬機” 。
Harmony VM未通過 TCK 認證未大規模商用Dalvik VM未遵循《Java 虛擬機規范》不能直接執行 Java 的 Class 文件
Microsoft JVM曾經是 Windows 系統下性能最好的 Java 虛擬機
其他KVM:曾在手機平臺上得到廣泛應用Java Card VM……
其他還有很多各種各樣的虛擬機,不再一一列舉 。值得注意的是一個比較新的 Java 虛擬機:Graal VM 。
Graal VM2018 年 4 月,Oracle Labs 公開的黑科技:Graal VM 。
Graal VM 被官方稱為”Universal VM”和”Polyglot VM”,它是在 HotSpot 虛擬機基礎上增強而成的跨語言全棧虛擬機 ??勺鳛?#8221;任何語言”的運行平臺,包括:
Java、Scala、Groovy、Kotlin 等基于 Java 虛擬機之上的語言C、C++、Rust 等基于 LLVM 的語言,同時支持 JavaScript、Ruby、Python 等
如圖所示:

文章插圖

文章插圖
而且自 JDK 10 起,HotSpot 中又加入了一個全新的即時編譯器:Graal 編譯器 。
如若將來某一天 HotSpot 虛擬機真的被替換,Graal VM 很有可能”上位” 。
4. 小結本文主要介紹了 Java 技術體系和 Java 虛擬機的發展歷程,該部分內容了解即可,后文再分析虛擬機的主要內容 。
為便于回顧和總結,這里將上述內容整理成了思維導圖:
【附學習路線圖 java學習體系框架】

文章插圖

文章插圖
- 八字中說約4年零一個月8日后上運是啥意思??八字 學習運
- 怎么畫畫,對于沒有任何美術功底的人來說,想學習畫畫該怎么做呢
- 中國現在有風水學校嗎該怎么來學習風水呢
- 什么樣的人適合學習預測學
- 如何布置書房促進孩子學習
- 周易號碼吉兇八字測算
- 附創意文案5種打造方法 經典文案范例格式創意
- 祠堂附近建房風水禁忌有哪些
- 附朋友圈走心文案寫作技巧 新店開業推廣朋友圈文案
- 怎么畫畫,繪畫初學者應該怎么學習,從哪開始練習
