許多 Java 開發者即便歷經多年實戰,對 JDK、JRE、JVM 三者的具體關係與分工仍感模糊。本文將系統梳理這三大核心組件的定義、版本差異、架構關係及執行流程,助你建立清晰的知識體系。
JDK (Java Development Kit) 是 Java 開發工具包,屬於整個 Java 生態的核心。它包含三大核心組件:
javac、調試器 jdb、打包工具 jar 等。rt.jar,涵蓋語言基礎、集合、I/O、網絡、圖形界面等預置類。最主流的是 Oracle (原 Sun) 發布的 JDK。此外,IBM、Azul Systems、阿里巴巴 (Dragonwell)、Amazon (Corretto) 等均推出自家構建版,針對性能、啟動速度、內存管理等進行優化。例如 IBM J9 VM 在吞吐量上常優於 HotSpot。但學習階段仍以掌握標準 Oracle JDK 為基礎。
註:Java 9 起採用模塊化系統,不再強調三大版本劃分,統一為 Java SE / EE 等。
JRE (Java Runtime Environment) 是 Java 平台的運行時環境,所有 Java 程序均需在其上運行。核心包含:
java.lang、java.util 等基礎包。關鍵差異:JRE 不包含 編譯器、調試器等開發工具,僅供「運行」而非「開發」。
JVM (Java Virtual Machine) 是 JRE 的核心組件,是一個規範化的虛擬計算機,具備完整的硬體架構模型:
.class 文件中的字節碼映射為底層 CPU 指令集或 OS 系統調用。Java 源碼 --javac--> 字節碼 .class --JVM--> 機器碼。不同作業系統提供各自的 JVM 實現 (Windows/Linux/macOS 各有對應版本),屏蔽了底層差異,實現「一次編譯,到處運行」。
JVM 不關心 Java 源碼,只承認符合規範的 .class 文件,這也為 Kotlin、Scala、Groovy 等 JVM 語言提供了基礎。

圖示直觀展示:JDK ⊃ JRE ⊃ JVM,層層包含,職責遞減。
.java 源碼。javac 將源碼編譯為字節碼 .class。| 組件 | 全稱 | 核心內容 | 適用場景 |
|---|---|---|---|
| JDK | Java Development Kit | JRE + 開發工具 + 類庫 | 開發機、CI/CD 構建節點 |
| JRE | Java Runtime Environment | JVM + 核心類庫 + 支持文件 | 生產環境運行節點 (舊版部署) |
| JVM | Java Virtual Machine | 虛擬機規範實現 (HotSpot, OpenJ9...) | 所有 Java 程序的執行核心 |
理解三者邊界與協作,是排查類加載問題、調優 GC、選擇部署包體積的基礎。建議開發者動手對比 jdk/bin、jre/bin 目錄差異,加深體感。