JVM(一)-JVM入門


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又有多少種呢?

  • Jrocket:原來屬於BEA 公司,曾號稱世界上最快的 JVM,后被 Oracle 公司收購,合並於 Hotspot。
  • J9: IBM 有自己的 java 虛擬機實現,它的名字叫做 J9. 主要是用在 IBM 產品(IBM WebSphere 和 IBM 的 AIX 平台上)。
  • TaobaoVM: 只有一定體量、一定規模的廠商才會開發自己的虛擬機,比如淘寶有自己的 VM,它實際上是 Hotspot 的定制版,專門為淘寶准備的,阿里、天
貓都是用的這款虛擬機。
  • LiquidVM: 它是一個針對硬件的虛擬機,它下面是沒有操作系統的(不是 Linux 也不是 windows),下面直接就是硬件,運行效率比較高。
  • zing: 它屬於 zual 這家公司,非常牛,是一個商業產品,很貴!它的垃圾回收速度非常快(1 毫秒之內),是業界標桿。它的一個垃圾回收的算法后來被
Hotspot 吸收才有了現在的 ZGC。

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

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

 所以,對於JVM的學習主要就是圍繞Hotspot進行學習。看到這里,大家應該對JVM應該有了一個初步的了解,接下來我們就開始進入JVM的世界吧。

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM