Java中JDK、JRE、JVM三者之间的关系
要搞懂 JDK、JRE、JVM 的关系,核心结论很明确:JDK 包含 JRE,JRE 包含 JVM,三者是从大到小的嵌套关系,各自承担 Java 开发和运行的不同核心职责。
一、 三者的核心定义与作用
1. JVM(Java Virtual Machine):Java 的 “跨平台核心”
JVM 全称 Java 虚拟机,是三者中最底层、最核心的组件。
- 核心作用:负责运行 Java 字节码文件(.class 文件),是 Java 实现 “一次编写,到处运行” 的关键。
- 关键特性:不同操作系统(Windows、Linux、macOS)有不同版本的 JVM,但它们都能执行相同的.class 文件。JVM 会把字节码翻译成对应系统能识别的机器指令,让 Java 程序脱离具体硬件和系统的束缚。
- 注意点:JVM 不能单独运行 Java 程序,它需要依赖 JRE 提供的核心类库支持。
2. JRE(Java Runtime Environment):Java 的 “运行环境”
JRE 全称 Java 运行时环境,是运行 Java 程序的最小依赖集合。
- 核心组成:
JVM + Java核心类库(如java.lang、java.util等) + 运行时支持文件。 - 核心作用:为 Java 程序提供运行所需的全部条件。如果你只需要运行别人开发好的 Java 程序(比如用 Java 写的桌面软件、服务器程序),安装 JRE 就足够了。
- 适用人群:普通用户、程序部署人员。
3. JDK(Java Development Kit):Java 的 “开发工具包”
JDK 全称 Java 开发工具包,是面向 Java 开发者的完整工具集合。
- 核心组成:
JRE + 开发工具。这里的开发工具包括编译器(javac.exe)、打包工具(jar.exe)、文档生成工具(javadoc.exe)、调试工具(jdb.exe)等。 - 核心作用:提供 Java 程序开发 + 编译 + 运行的全流程支持。开发者用 JDK 里的
javac命令把 Java 源代码(.java 文件)编译成字节码文件(.class 文件),再通过 JRE 里的 JVM 运行这个字节码文件。 - 适用人群:Java 程序员、开发人员。
二、 三者的嵌套关系与层级图
用一个简单的公式就能清晰表示:
plaintext
JDK = JRE + 开发工具(javac、jar等)
JRE = JVM + 核心类库 + 运行时文件
层级从高到低排序:
JDK(最外层,开发全量工具) → JRE(中间层,运行必备环境) → JVM(最内层,跨平台核心)三、 通俗类比:帮你快速理解
可以把三者比作 “做蛋糕” 的流程:
- JVM:相当于烤箱—— 负责把 “蛋糕胚(字节码)” 烤熟(运行),不同品牌的烤箱(不同系统的 JVM)都能烤同一种蛋糕胚。
- JRE:相当于烤箱 + 基础食材(面粉、鸡蛋)—— 有了这些才能烤出蛋糕,对应有了 JRE 才能运行 Java 程序。
- JDK:相当于烤箱 + 基础食材 + 烘焙工具(打蛋器、模具、刮刀)—— 不仅能烤蛋糕,还能从原材料开始制作蛋糕,对应能开发、编译、运行 Java 程序。
四、 关键使用场景总结
| 场景 | 需要安装的组件 |
|---|---|
| 开发 Java 程序(写代码、编译、调试) | JDK |
| 仅运行已编译好的 Java 程序 | JRE |
| 跨平台运行 Java 程序的核心依赖 | JVM(包含在 JRE 中,无需单独安装) |
总结
- 三者是包含与被包含的关系,JDK 最全面,JVM 是运行核心。
- 开发选 JDK,运行选 JRE,跨平台靠 JVM。
- Java 的跨平台特性本质是JVM 的跨平台,而非 Java 程序本身直接跨平台。

浙公网安备 33010602011771号