在講JVM以前,首先讓咱們瞭解一些概念。java
字面意思就是一臺虛擬的計算機,這臺計算機的硬件都是經過軟件模擬出來的。用過 vmware 的人 應該就對 虛擬機 這個概念很熟悉了。jvm
機器碼,學名機器語言指令,有時也被稱爲原生碼(Native Code),是CPU可直接執行的代碼。虛擬機
JVM 是一種虛擬機規範,任何遵照JVM規範的虛擬機均可以稱之爲JVM虛擬機。class
注意上面說的是JVM虛擬機而不是java虛擬機,由於,jvm發展到如今已經不僅僅是java一家再用了,而是慢慢造成了一個生態。好比Jython、jRuby、Scala、 Groovy、 Clojure 都在使用jvm虛擬機。效率
咱們日常使用的Oracal JDK中的 java虛擬機,名字叫作 HotSpot,它是JVM 的一個實現。軟件
JVM 和 Java虛擬機 是規範與實現的關係硬件
上面講到vmware
JVM虛擬機和普通計算機的不一樣之處在於計算機
既然有jvm虛擬機,那對應的也有 「jvm實體機」。語言
jvm實體機是一組實現了jvm規範的硬件,它能夠直接執行.class字節碼,而且效率極快! 由於在jvm實體機中.class字節碼字不須要再被轉換成機器碼在執行,此時它就是機器碼。
能夠簡單理解爲