天天看點

【JVM進階之路】一:Java虛拟機概覽1、Java簡史2、JVM簡介3、Java虛拟機規範4、Java虛拟機常見實作5、JDK&JRE&JVM

1、Java簡史

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

【JVM進階之路】一:Java虛拟機概覽1、Java簡史2、JVM簡介3、Java虛拟機規範4、Java虛拟機常見實作5、JDK&JRE&JVM

從1995年“Java”正式出現以來,Java已經經曆了二十幾年的發展。

【JVM進階之路】一:Java虛拟機概覽1、Java簡史2、JVM簡介3、Java虛拟機規範4、Java虛拟機常見實作5、JDK&JRE&JVM

Java語言之是以能廣受歡迎,其中的原因之一是Java是一門可以跨平台的語言。

而跨平台的特性就是通過Java虛拟機(JVM)是實作的。

2、JVM簡介

JVM是整個Java平台的基石。

JVM可以看作抽象的計算機。編譯器将Java檔案編譯為Java位元組碼檔案(.class),接下來JVM對位元組碼檔案進行解釋,翻譯成特定底層平台比對的機器指令并運作。

【JVM進階之路】一:Java虛拟機概覽1、Java簡史2、JVM簡介3、Java虛拟機規範4、Java虛拟機常見實作5、JDK&JRE&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 程式生成的位元組碼檔案。

三者關系簡圖如下:

【JVM進階之路】一:Java虛拟機概覽1、Java簡史2、JVM簡介3、Java虛拟機規範4、Java虛拟機常見實作5、JDK&JRE&JVM