Java虛擬機發展史

https://blog.csdn.net/tinyDolphin/article/details/72809018

如何檢視自己的虛擬機器版本?
Sun Classic / Exact VM
Sun HotSpot VM
Sun Mobile-Embedded VM / Meta-Circular VM
BEA JRockit / IBM J9 VM
Azul VM / BEA Liquid VM
Apache Harmony / Google Android Dalvik VM
Microsoft JVM 及其他
1、如何檢視自己的虛擬機器版本?
控制檯輸入:java -version,即可檢視。

2、Sun Classic / Exact VM
Sun Classic:
世界上第一款商用 Java 虛擬機器;
只能使用純直譯器方式來執行 Java 程式碼,也可以使用外掛JIT編譯器,JIT 會完全接管虛擬機器的執行系統,但是此時直譯器不會再工作了;
JDK1.2之前是 Sun JDK 中唯一的虛擬機器,JDK1.4 時,完全退出商用虛擬機器的歷史舞臺,與 Exact VM 一起進入了Sun Labs Research VM。
Exact VM:
它的執行系統已經具備了現代高效能虛擬機器的雛形:如兩級即時編譯器、編譯器與解析器混合工作模式等;
使用準確式記憶體管理:虛擬機器可以知道記憶體中某個位置的資料具體是什麼型別。
有與 HotSpot 幾乎一樣的熱點探測;
在商業應用上只存在了很短暫的時間就被更優秀的 HotSpot VM 所取代。
3、Sun HotSpot VM
它是 Sun JDK 和 OpenJDK 中所帶的虛擬機器,也是目前使用範圍最廣的 Java 虛擬機器;
繼承了 Sun 之前兩款商用虛擬機器的優點(如準確式記憶體管理),也使用了許多自己新的技術優勢,如熱點程式碼探測技術(通過執行計數器找出最具有編譯價值的程式碼,然後通知 JIT 編譯器以方法為單位進行編譯);
Oracle 公司分別收購了 BEA 和 Sun,並在 JDK8 的時候,整合了 JRokit VM 和 HotSpot VM,如使用了 JRokit 的垃圾回收器與 MissionControl 服務,使用了 HotSpot 的 JIT 編譯器與混合的執行時系統。
4、Sun Mobile-Embedded VM / Meta-Circular VM
KVM:在 Android、IOS 等智慧手機作業系統出現前,曾在手機平臺上得到非常廣泛的應用。
CDC / CLDC HotSpot Implementation:整個Java ME 的重要支柱,但是在 Android 和 IOS 二分天下的移動數字裝置市場看來,其面臨的局面不容樂觀。
Squawk VM:運行於 Sun SPOT(一種手持的WiFi裝置),也曾運用於 Java Card,是一個 Java 程式碼比重很高的嵌入式虛擬機器實現。
JavaInJava:一個實驗室性質的虛擬機器,試圖以 Java 語言來實現 Java 語言本身的執行環境。它必須執行在另外一個宿主虛擬機器之上,內部沒有 JIT 編譯器,程式碼只能以解析模式執行。
Maxine VM:與 JavaInJava 非常相似,它有著先進的 JIT 編譯器和垃圾收集器(但沒有解析器),可在宿主模式或獨立模式下執行,其執行效率已經接近了 HotSpot Client VM 的水平。
5、BEA JRockit / IBM J9 VM
JRockit VM:
號稱“世界上速度最快的 Java 虛擬機器”(廣告詞);
一款專門為伺服器硬體和伺服器端應用場景高度優化的虛擬機器,由於專注於伺服器端應用,可以不太關注程式啟動速度,因此 JRockit 內部不包含解析器實現,全部程式碼靠即時編譯器編譯後執行,除此之外,JRockit 的垃圾收集器和 MissionControl 服務套件等部分的實現,在眾多 Java 虛擬機器中也一直處於領先水平。
IBM J9 VM:
市場定位與 Sun HotSpot 比較接近,是一款設計上從伺服器端到桌面應用再到嵌入式都全面考慮的多用途虛擬機器;
其開發的目的:作為 IBM 公司各種 Java 產品的執行平臺。
6、Azul VM / BEA Liquid VM
我們平時所說的“高效能 Java 虛擬機器”一般是指 HotSpot、JRockit、J9 這類在通用平臺上執行的商用虛擬機器,但其實 Azul VM 和 BEA Liquid VM 這類特定硬體平臺專有的虛擬機器才是“高效能”的武器。

Azul VM: 是在 HotSpot 基礎上進行大量改進,運行於 Azul Systems 公司的專有硬體 Vega 系統上的 Java 虛擬機器,每個 Azul VM 例項都可以管理至少數十個 CPU 和數百 GB 記憶體的硬體資源,並提供在巨大範文內實現可控的 GC 時間的垃圾收集器、為專有硬體優化的執行緒排程等優秀特性;
Liquid VM:
即是現在的 JRockit VE(Virtual Edition),是 BEA 公司開發的,可以直接執行在自家的 Hypervisor 系統上的 Jrockit VM 的虛擬化版本。
它不需要作業系統的支援,或者說它自己本身實現了一個專有作業系統的必要功能,如檔案系統、網路支援等。
由虛擬機器越過通用作業系統直接控制硬體可以獲得很多好處,如線上程排程時,不需要再進行核態/使用者態的切換等,這樣可以最大限度的發揮硬體的能力,提升 Java 程式的執行效能。
7、Apache Harmony / Google Android Dalvik VM
它們只能稱為“虛擬機器”,而不能稱為“Java 虛擬機器”。

Apache Harmony:是一個 Apache 軟體基金會旗下以 Apache License 協議開源的實際兼容於 JDK1.5 和 JDK1.6 的 Java 程式執行平臺。
Dalvik VM:
是 Android 平臺的核心組成部分之一。
沒有遵循 Java 虛擬機器規範,不能直接執行 Java 的 Class 檔案,使用的是暫存器架構而不是 JVM 中常見的棧架構。
它執行的 dex(Dalvik Executable)檔案可以通過 Class 檔案轉化而來。
8、Microsoft JVM 及其他
Microsoft JVM:微軟公司為了在 IE3 中支援 Java Applets 應用而開發了自己的 Java 虛擬機器,雖然這款虛擬機器只有 Windows 平臺的版本,卻是當時 Windows 下效能最好的 Java 虛擬機器。
其他:JamVM、cacaovm、SableVM、Kaffe、Jelatine JVM、Nano VM、MRP、Moxie JVM、Jikes RVM。
---------------------
作者:TinyDolphin
來源:CSDN
原文:https://blog.csdn.net/tinyDolphin/article/details/72809018?utm_source=copy
版權宣告:本文為博主原創文章,轉載請附上博文連結!