JVM(一)-JVM入門

負重前行的小牛發表於2020-11-22

JVM的定義:

  JVM是Java Virtual Machine(Java虛擬機器)的縮寫,JVM是一種用於計算裝置的規範,它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。

跨平臺性:

  引入Java語言虛擬機器後,Java語言在不同平臺上執行時不需要重新編譯。Java語言使用Java虛擬機器遮蔽了與具體平臺相關的資訊,使得Java語言編譯程式只需生成在Java虛擬機器上運

行的目的碼(位元組碼),也就是我們常說的.class檔案,就可以在多種平臺上不加修改地執行。當然,並不是java一種語言通過JVM實現跨平臺性,還有scala、kotlin、groovy等等,這

些語言也都是跑在虛擬機器上的。如下圖所示:

 

 

 

   跨平臺性有一個誤區,並不是同一個jvm可以在windows、linux等平臺上執行,而是各種語言生成的class通過jvm執行後可以在不同的平臺上執行,而效果是一樣的。為什麼能達到這樣的目的,是因為jvm針對

不同的平臺,提供了不同的實現,比如java的jdk包在windows上叫jdk-8u201-windows-x64.exe,在Linux上叫jdk-8u261-linux-x64.tar.gz。所以說,所謂的一處編譯到處執行,並不是任何的平臺都可以的,必須要JVM

支援的才行。

 java編譯執行概覽:

 

 

 從上圖可以清晰的看到java程式的大致執行過程,首先將java檔案通過JDK的工具javac編譯成class位元組碼檔案。然後通過JVM的類載入器、位元組碼直譯器、JIP編譯器等翻譯成

硬體可以識別的機器碼,最後通過硬體進行執行。通過上圖也很清晰的對JDK、JRE和JVM進行的區分。

常見的JVM的實現:

  可以通過jvm實現跨平臺的語言有很多種,那麼jvm又有多少種呢?

如圖所示,常見JVM實現主要有Hotspot 、Jrocket、J9、TaobaoVM、LiquidVM、zing,其中我們最常用的就是Oracle的Hotspot了,如果你的電腦上安裝了java,

在命令列輸入java -version可以看到如圖:

 

 所以,對於JVM的學習主要就是圍繞Hotspot進行學習,其他幾種這裡就不詳細介紹了,有興趣的可以自行去了解。看到這裡,大家應該對JVM有了一個初步的瞭解,

接下來我們就開始進入JVM的世界吧。

  

 

 

相關文章