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

JDK、JRE 與 JVM 深度解析:核心區別、關聯與運作機制

     編輯:Java 相關知識

許多 Java 開發者即便歷經多年實戰,對 JDK、JRE、JVM 三者的具體關係與分工仍感模糊。本文將系統梳理這三大核心組件的定義、版本差異、架構關係及執行流程,助你建立清晰的知識體系。

一、JDK:Java 開發的核心基石

JDK (Java Development Kit) 是 Java 開發工具包,屬於整個 Java 生態的核心。它包含三大核心組件:

  • JRE (Java Runtime Environment):Java 運行環境,提供程序執行所需的基礎支撐。
  • 開發工具集:如編譯器 javac、調試器 jdb、打包工具 jar 等。
  • Java 基礎類庫 (Java API):即 rt.jar,涵蓋語言基礎、集合、I/O、網絡、圖形界面等預置類。

主流 JDK 版本與廠商分支

最主流的是 Oracle (原 Sun) 發布的 JDK。此外,IBM、Azul Systems、阿里巴巴 (Dragonwell)、Amazon (Corretto) 等均推出自家構建版,針對性能、啟動速度、內存管理等進行優化。例如 IBM J9 VM 在吞吐量上常優於 HotSpot。但學習階段仍以掌握標準 Oracle JDK 為基礎。

JDK 三大歷史版本線 (Java 8 前稱呼)

  • J2SE (Standard Edition):標準版,桌面應用、基礎開發主力。
  • J2EE (Enterprise Edition):企業版,包含 Servlet、EJB、JPA 等企業級規範,現已更名為 Jakarta EE。
  • J2ME (Micro Edition):微型版,針對嵌入式、早期功能機,現已基本退出歷史舞台。

註:Java 9 起採用模塊化系統,不再強調三大版本劃分,統一為 Java SE / EE 等。

二、JRE:程序運行的舞臺

JRE (Java Runtime Environment) 是 Java 平台的運行時環境,所有 Java 程序均需在其上運行。核心包含:

  • JVM (Java Virtual Machine):虛擬機核心。
  • Java 核心類庫:java.lang、java.util 等基礎包。
  • 支持文件:字體、配置、本地庫等。

關鍵差異:JRE 不包含 編譯器、調試器等開發工具,僅供「運行」而非「開發」。

三、JVM:跨平台的秘密引擎

JVM (Java Virtual Machine) 是 JRE 的核心組件,是一個規範化的虛擬計算機,具備完整的硬體架構模型:

  • 指令集 (字節碼指令)
  • 內存結構 (堆、棧、方法區、程序計數器、本地方法棧)
  • 寄存器模型
  • 垃圾回收機制

核心職責

  1. 字節碼解釋/編譯執行:將 .class 文件中的字節碼映射為底層 CPU 指令集或 OS 系統調用。
  2. 內存管理:自動內存分配與垃圾回收 (GC)。
  3. 安全沙箱:類加載驗證、權限控制。

跨平台原理

Java 源碼 --javac--> 字節碼 .class --JVM--> 機器碼。不同作業系統提供各自的 JVM 實現 (Windows/Linux/macOS 各有對應版本),屏蔽了底層差異,實現「一次編譯,到處運行」。

JVM 不關心 Java 源碼,只承認符合規範的 .class 文件,這也為 Kotlin、Scala、Groovy 等 JVM 語言提供了基礎。

四、三者架構關係圖解

JDK、JRE、JVM 架構關係圖

圖示直觀展示:JDK ⊃ JRE ⊃ JVM,層層包含,職責遞減。

五、實際開發與部署流程

  1. 開發階段:使用 JDK 調用 Java API 編寫 .java 源碼。
  2. 編譯階段:javac 將源碼編譯為字節碼 .class。
  3. 運行階段:在 JRE 上啟動 JVM,由類加載器載入字節碼,經驗證、準備、解析、初始化,最終由執行引擎 (解釋器 + JIT 編譯器) 執行。

六、總結對照表

組件全稱核心內容適用場景
JDKJava Development KitJRE + 開發工具 + 類庫開發機、CI/CD 構建節點
JREJava Runtime EnvironmentJVM + 核心類庫 + 支持文件生產環境運行節點 (舊版部署)
JVMJava Virtual Machine虛擬機規範實現 (HotSpot, OpenJ9...)所有 Java 程序的執行核心

理解三者邊界與協作,是排查類加載問題、調優 GC、選擇部署包體積的基礎。建議開發者動手對比 jdk/bin、jre/bin 目錄差異,加深體感。

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