1、Java簡史
Java語言是一門通用的、面向對象的、支援并發的程式語言。全球從事Java相關開發的人員已經數以百萬計。

從1995年“Java”正式出現以來,Java已經經曆了二十幾年的發展。
Java語言之是以能廣受歡迎,其中的原因之一是Java是一門可以跨平台的語言。
而跨平台的特性就是通過Java虛拟機(JVM)是實作的。
2、JVM簡介
JVM是整個Java平台的基石。
JVM可以看作抽象的計算機。編譯器将Java檔案編譯為Java位元組碼檔案(.class),接下來JVM對位元組碼檔案進行解釋,翻譯成特定底層平台比對的機器指令并運作。
JVM和Java語言沒有必然的聯系,它隻與class檔案格式關聯。也就是任何語言,隻要能編譯成符合規範的位元組碼檔案,都是能被Jvm運作的。也就是說JVM是跨語言的平台。
3、Java虛拟機規範
我們還要認識到,Java虛拟機是一種規範,它指定了Java虛拟機結構、class檔案格式、類加載過程等。我們平時所提到的Java虛拟機一般指的是一種具體的Java虛拟機的實作,例如最知名的hotspot,遵循Java虛拟機規範,甚至可以自己實作Java虛拟機。
4、Java虛拟機常見實作
4.1、HotSpot VM
HotSpot虛拟機是現在應用最廣泛的虛拟機,它是Sun/OracleJDK和OpenJDK中的預設Java虛拟機。
但是這款虛拟機在最初并非由Sun公司所開發,而是由一家名為“Longview Technologies”的小公司設計;甚至這個虛拟機最初并非是為Java語言而研發的,它來源于Strongtalk虛拟機。
Oracle收購Sun以後,建立了HotRockit項目來把原來BEA JRockit中的優秀特性融合到HotSpot之中。到了2014年的JDK 8時期,裡面的HotSpot就已是兩者融合的結果,HotSpot在這個過程 裡移除掉永久代,吸收了JRockit的Java Mission Control監控工具等功能。 得益于Sun/OracleJDK在Java應用中的統治地位,HotSpot理所當然地成為全世界使用最廣泛的Java 虛拟機,是虛拟機家族中毫無争議的“武林盟主”。
4.2、BEA JRockit/IBM J9 VM
曆史上除了Sun/Oracle公司以外,也有其他組織、公司開發過虛拟機的實作。除了HotSpot之外,BEA JRockit和IBM J9 VM曾經與HotSpot并稱“三大商業Java虛拟機”,它們分别是BEA System公司和 IBM公司開發。
除BEA和IBM公司外,其他一些大公司也号稱有自己的專屬JDK和虛拟機,但是它們要麼是通過從Sun/Oracle公司購買版權的方式獲得的(如HP、SAP等),要麼是基于OpenJDK項目改進而來的 (如阿裡巴巴、Twitter等),都并非自己獨立開發。
5、JDK&JRE&JVM
JDK&JRE&JVM三者常常被用來比較。
- JDK(Java Development Kit Java 開發工具包),JDK 是提供給 Java 開發人員使用的,其中包含了 Java 的開發工具,也包括了 JRE。其中的開發工具包括編譯工具(javac.exe) 打包工具(jar.exe)等。
- JRE(Java Runtime Environment Java 運作環境) 是 JDK 的子集,也就是包括 JRE 所有内容,以及開發應用程式所需的編譯器和調試器等工具。JRE 提供了庫、Java 虛拟機(JVM)和其他元件,用于運作 Java 程式設計語言、小程式、應用程式。
- JVM(Java Virtual Machine Java 虛拟機),JVM 可以了解為是一個虛拟出來的計算機,具備着計算機的基本運算方式,它主要負責把 Java 程式生成的位元組碼檔案。
三者關系簡圖如下: