JVM 基礎概念

在講JVM以前,首先讓咱們瞭解一些概念。java

什麼是虛擬機?

字面意思就是一臺虛擬的計算機,這臺計算機的硬件都是經過軟件模擬出來的。用過 vmware 的人 應該就對 虛擬機 這個概念很熟悉了。jvm

什麼是機器碼?

機器碼,學名機器語言指令,有時也被稱爲原生碼(Native Code),是CPU可直接執行的代碼。虛擬機

什麼是JVM 和 Java虛擬機有什麼關係?

JVM

JVM 是一種虛擬機規範,任何遵照JVM規範的虛擬機均可以稱之爲JVM虛擬機。class

注意上面說的是JVM虛擬機而不是java虛擬機,由於,jvm發展到如今已經不僅僅是java一家再用了,而是慢慢造成了一個生態。好比Jython、jRuby、Scala、 Groovy、 Clojure 都在使用jvm虛擬機。效率

Java虛擬機

咱們日常使用的Oracal JDK中的 java虛擬機,名字叫作 HotSpot,它是JVM 的一個實現。軟件

關係

JVM 和 Java虛擬機 是規範與實現的關係硬件

JVM虛擬機與普通計算機有何不一樣?

JVM虛擬機

上面講到vmware

  • JVM 是一種虛擬機規範
  • JVM虛擬機是遵照了 JVM規範的虛擬機

不一樣之處

JVM虛擬機和普通計算機的不一樣之處在於計算機

  • jvm虛擬機的 機器碼 是 .class字節碼(想一想這句話是什麼意思。)

jvm實體機

既然有jvm虛擬機,那對應的也有 「jvm實體機」語言

jvm實體機是一組實現了jvm規範的硬件,它能夠直接執行.class字節碼,而且效率極快! 由於在jvm實體機中.class字節碼字不須要再被轉換成機器碼在執行,此時它就是機器碼。

什麼是.class字節碼?

能夠簡單理解爲

  • jvm平臺(jvm虛擬機和jvm實體機) 中,.class字節碼就是機器碼。
  • 在非jvm平臺中,因爲.class字節碼是另一個平臺(jvm平臺)的機器碼, 故不能以機器碼相稱,乾脆取名叫字節碼,以示區分。這就是字節碼的由來(我我的理解的)。
相關文章
相關標籤/搜索