首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JVM、JRE、JDK 三者關係與差異完整圖解:從原始碼到機器指令

     編輯:Java 相關知識

前言

JVM、JRE、JDK 是 Java 生態三大核心概念,混淆它們會導致環境配置錯誤、部署失敗、效能調優無從下手。本文以圖解與對比表完整釐清:定義、包含關係、版本演進、選擇指南、環境變數配置實戰。

核心定義

術語全稱核心內容面向角色
JVMJava Virtual Machine虛擬機規範 + 具體實現 (HotSpot、OpenJ9)、類載入器、執行引擎、記憶體模型、GC所有 Java 程式運行基座
JREJava Runtime EnvironmentJVM + 核心類庫 (rt.jar/modules) + 支援檔案 (字體、配置、插件)最終用戶、生產環境運行
JDKJava Development KitJRE + 開發工具 (javac、java、jar、javadoc、jdb、jconsole、jvisualvm...)開發者

包含關係圖解

+---------------------------+
|           JDK             |
|  +---------------------+  |
|  |        JRE          |  |
|  |  +---------------+  |  |
|  |  |      JVM      |  |  |
|  |  |  (HotSpot)    |  |  |
|  |  +---------------+  |  |
|  |  | 核心類庫       |  |  |
|  |  | (java.*,      |  |  |
|  |  |  javax.*)     |  |  |
|  |  +---------------+  |  |
|  |  +---------------+  |  |
|  |  | 開發工具       |  |  |
|  |  | javac, javadoc,|  |  |
|  |  |  jdb, jconsole|  |  |
|  |  +---------------+  |  |
|  +---------------------+  |
+---------------------------+

版本演進與命名

JDK 9 採用模組化 (JPMS),rt.jar 拆分為 jmod 模組,jlink 可定製精簡 JRE。

開發與運行流程

源碼 (.java) 
  → javac (JDK) 
  → 位元組碼 (.class) 
  → 類載入器 (JVM) 
  → 類驗證/準備/解析/初始化 
  → 解釋執行 / JIT 編譯成機器碼 
  → CPU 執行
  • javac:前端編譯器,語法分析、語義檢查、生成 .class。
  • JVM:解釋器 + JIT (C1/C2/Graal) 熱點編譯、GC 管理堆記憶體。
  • 跨平台關鍵:位元組碼統一,JVM 屏蔽 OS/硬體差異。

環境變數配置實戰 (Windows)

# 1. 系統變數
JAVA_HOME = C:\Program Files\Java\jdk-21

# 2. Path 追加
%JAVA_HOME%\bin

# 3. 驗證
java -version
javac -version
where java
where javac

常見錯誤:
❌ Path 指向 JRE bin 而非 JDK bin → 無 javac。
❌ 多版本共存 Path 順序錯誤 → 版本衝突。
❌ CLASSPATH 設為 . 或具體 jar → 干擾模組化載入,**現代專案勿設 CLASSPATH**。

選擇指南

舊稱新稱 (JDK 5+)用途
J2SEJava SE標準版,桌面/伺服器通用開發
J2EEJava EE → Jakarta EE企業版,Web/分散式企業應用
J2MEJava ME嵌入式/行動裝置 (已邁入歷史)
場景建議安裝理由
本地開發、編譯、除錯JDK (LTS: 8, 11, 17, 21)需 javac、jconsole、jvisualvm、源碼附件
生產伺服器僅運行應用JRE 或 jlink 定製 JRE體積小、攻擊面小、啟動快
Docker 映像構建多階段建構:Build 階段用 JDK,Runtime 階段複製 .class 到精簡 JRE最終映像最小 (可 < 50MB)
學習 JVM 內部原理JDK + HSDB (HotSpot Serviceability Agent)需 jmap、jstack、jhsdb 等診斷工具

主流 JDK 發行版

  • Oracle JDK:商業支援,OTN 授權 (生產需付費)。
  • OpenJDK:開源參考實現,社群維護。
  • Eclipse Temurin (Adoptium):廣泛採用的 OpenJDK 構建,免費、長期支援、Tck 認證。
  • Amazon Corretto:AWS 優化、長期支援、免費。
  • Azul Zulu / Prime:高效能 GC (C4)、商業支援。

推薦:生產環境優先 Eclipse Temurin LTS (17/21),免費且穩定。

總結

JDK ⊃ JRE ⊃ JVM。開發裝 JDK,部署可裁剪 JRE,核心運行靠 JVM。理解三者邊界、版本策略、環境變數正確配置,是 Java 工程師的基本功,亦是從「會寫代碼」邁向「懂底層、會運維」的關鍵一步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved