03.01 Java虛擬機——字節碼、機器碼和JVM

前言:

本文是Java虛擬機系列第一篇,主要講解Java虛擬機的概念,字節碼、機器碼、編譯器、解釋器的概念

1.Java虛擬機(JVM)

JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用於計算設備的規範,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。Java語言的一個非常重要的特點就是與平臺的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機後,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令(機器碼)執行。這就是Java的能夠“一次編譯,到處運行

”的原因。上面這段話摘自百度百科——https://baike.baidu.com/item/JVM/2902369?fr=aladdin 這段話概括性比較強,也包含了本篇文章的主幹知識點:1.JVM/Java虛擬機2.機器碼、字節碼3.編譯器和解釋器

2.機器碼和字節碼

首先,我們知道一段程序要想在電腦上運行,必須“翻譯”成電腦能夠聽懂的,由0,1組成的二進制代碼,這種類型的代碼即稱為機器碼,機器碼是計算機可以直接執行的、速度最快的代碼。在Java中,編寫好的程序即通常的.java文件需要經過編譯器編譯成.class文件,這段.class文件是一段包含著虛擬機指令、程序和數據片段的二進制文件,即字節碼,為什麼叫字節碼?因為這種類型的代碼以一個字節8bit為最小單位儲存。

3.編譯器和解釋器

編譯器編譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器語言)的翻譯過程。解釋器將相對高級的程序代碼解釋成電腦可以直接運行的機器碼。

以Java為例:電腦是不能直接執行Java程序的,一個.java程序要想被執行,首先需要編譯器將高級的.java程序文件編譯成.class字節碼片段,字節碼經過JVM(解釋器)的處理後生成電腦可以直接執行的機器碼,至此java程序才能得以正確運行。


分享到:


相關文章: