jvm体系结构_JVM体系结构:JVM中的执行引擎
jvm體系結構
各位讀者好! 在JVM系列的上一篇文章中,開發人員了解了虛擬機的ClassLoader和Runtime Data Areas組件。 本教程將幫助開發人員正確理解JVM中的執行引擎 。
1.簡介
在繼續之前,讓我們看一下Java虛擬機及其基本特征。
1.1什么是Java虛擬機(JVM)?
Java虛擬機(JVM)是??駐留在您的計算機上的抽象虛擬機,并為Java字節碼提供了運行時環境以供執行。 JVM可用于許多硬件和軟件平臺,但是很少有Java開發人員知道Java運行時環境 (JRE)是Java虛擬機 (JVM)的實現。 JVM分析字節碼,對其進行解釋,然后執行相同的字節碼以顯示輸出。
JVM的基本功能是執行已編譯的.class文件(即字節碼)并生成輸出。 請注意 ,每個操作系統都有一個不同的JVM,但是在所有操作系統上生成的字節碼輸出都是相同的。 這意味著在Windows操作系統上生成的字節碼也可以在Linux操作系統上運行,反之亦然,從而使Java成為獨立于平臺的語言。
圖1:Java虛擬機概述
1.1.1 JVM做什么?
Java虛擬機執行以下操作:
- 加載所需的.class和jar文件
- 分配參考并驗證代碼
- 執行代碼
- 為Java字節碼提供運行時環境
1.1.2 JVM內部架構
下圖顯示了符合JVM規范的Java虛擬機的關鍵內部組件。
圖2:Java虛擬機架構
下面分別說明圖2所示的執行引擎組件。
1.2 JVM中的執行引擎
該組件執行通過類加載器分配給運行時數據區域的字節碼。 該字節碼作為指令讀取,每個字節碼指令由一個1字節的OpCode和一個加法操作數組成。 請注意 ,Java字節碼是以人類可讀的形式編寫的,因此執行引擎必須將字節碼更改為Java虛擬機中的機器可以輕松執行的語言。 執行引擎具有三個主要子組件,即
- 解釋器 :此組件讀取字節碼指令并以順序方式執行它們。 該組件通過接受文件名參數從命令行運行應用程序。 可以使用以下原型命令: java <_compiled_file_name_without_extension_>
請記住 ,虛擬機解釋器加載的已編譯類(即.class文件)必須包含采用以下形式的main()方法。
public static void main(String[] args) { // Sample code here} - JIT(Just In Time)編譯器 :該組件抵消了解釋器執行緩慢的缺點,并提高了性能。 JIT編譯器同時編譯字節碼的相似部分,從而減少了編譯所需的總時間。 該組件中的編譯器是指將JVM指令集轉換為特定于OS的指令集的轉換器。
- Oracle使用稱為Hotspot Compiler的編譯器來搜索需要通過概要分析以最高優先級進行編譯的熱點,然后將該熱點編譯為本機代碼。
- 垃圾收集 :此組件是執行引擎的一部分,該引擎通過收集和刪除未引用的對象來釋放內存
圖3:JVM中的執行引擎
1.3如何編譯和執行Java類?
本節將演示Java類的編譯和執行 。 讓我們借助示例代碼片段來了解此過程。
1.3.1創建Java文件
打開操作系統命令提示符,我們將使用“記事本”創建一個簡單的Java類。 可以使用以下Java命令。
> notepad _sample_file_name_with_extension_該命令提供以下輸出。
圖4:使用記事本創建Java文件
1.3.2編寫示例Java代碼
如圖4所示,該命令將打開一個記事本 ,開發人員可以將示例代碼添加到顯示虛擬輸出的Welcome.java文件中。 示例代碼如圖5所示, 成功執行后將顯示問候消息 。
圖5:添加示例代碼
1.3.3編譯Java類
將代碼保存在Welcome.java文件中后,開發人員將需要對其進行編譯 。 該編譯將生成Welcome.class文件,該文件又將生成.class文件。 要編譯該文件,可以使用以下Java命令。
> javac _Java_file_name_with_extension_該命令提供以下輸出。
圖6:編譯文件
1.3.4執行Java類
現在,開發人員將需要執行生成的Welcome.class文件以顯示輸出。 要執行該文件,可以使用以下Java命令。
> java _Compiled_file_name_with_extension_該命令提供以下輸出。
圖7:執行文件
1.4 JVM與JRE與JDK
在繼續完成本教程之前,讓我們看一下Java編程的三個重要關鍵字。 許多開發人員無法獲得兩者之間的差異。
- Java虛擬機(JVM) :JVM是一種虛擬機,為執行Java字節碼提供了運行時環境
- Java運行時環境(JRE) :JRE是一個在其中運行JVM的環境,并具有Java虛擬機在執行時使用的類庫和其他文件。 換句話說,JRE = Java虛擬機(JVM)+運行該應用程序的庫
- Java開發工具包(JDK) :JDK是JRE的父集,具有JRE包含的所有內容以及開發工具,例如編譯器,調試器等。換句話說,JDK = Java運行時環境(JRE)+開發工具
這是JVM,JRE和JDK的圖形表示。
圖8:JVM,JRE和JDK表示形式
這就是這篇文章的全部內容。 學習愉快!
2.結論
在本教程中,開發人員對JVM中的執行引擎組件進行了概述。 您可以在“ 下載”部分中下載示例代碼。
3.下載源代碼
這是Java虛擬機(JVM)中執行引擎的概述教程。
下載您可以在此處下載本教程的源代碼: Compilation_and_Execution
翻譯自: https://www.javacodegeeks.com/2018/04/jvm-architecture-execution-engine-in-jvm.html
jvm體系結構
總結
以上是生活随笔為你收集整理的jvm体系结构_JVM体系结构:JVM中的执行引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手臂英语怎么读 手臂英语是什么
- 下一篇: 三点水一个间读什么 三点水一个间的读音