JDK包含JRE,JRE包含JVM;JVM执行字节码并提供跨平台能力,JRE是运行Java程序的最小环境(含JVM与核心类库),JDK是开发者工具包(含JRE及编译、调试等工具)。

JDK、JRE 和 JVM 是 Java 生态中三个基础但常被混淆的概念,它们不是并列关系,而是层层包含:JDK 包含 JRE,JRE 包含 JVM。理解它们的关键,在于搞清“谁干啥”和“谁需要谁”。
JVM 是执行字节码的虚拟机
JVM(Java Virtual Machine)是真正干活的执行引擎。它不认 .java 源文件,只认编译后的 .class 字节码;它把字节码翻译成当前操作系统能理解的机器指令,从而实现“一次编译,到处运行”。它的核心能力包括:
- 加载并校验字节码,防止非法操作
- 管理内存(堆、栈、方法区等)并自动回收无用对象(GC)
- 提供跨平台能力——Windows、Linux、macOS 各自有一套 JVM 实现
- 内置安全机制,比如运行时字节码验证、沙箱限制
JRE 是运行 Java 程序的最小环境
JRE(Java Runtime Environment)= JVM + 核心类库 + 运行时工具(如 java 命令)。它不包含任何开发功能,只负责让已编译好的程序跑起来。举个例子:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 你双击运行一个 .jar 文件,背后调用的就是 JRE 中的 java.exe
- 它依赖 rt.jar 等核心类库(比如 java.lang、java.util),没有这些,JVM 就无法识别 String 或 ArrayList
- 普通用户只需安装 JRE 即可运行 Java 应用(如旧版 Minecraft 启动器、某些企业内部工具)
JDK 是面向开发者的完整工具包
JDK(Java Development Kit)= JRE + 编译器(javac)、调试器(jdb)、打包工具(jar)、监控分析工具(jconsole、jstat、jmap)等。它是写代码、编译、调试、部署全链路所需的资源集合:
- javac 把 .java 编译成 .class;java 命令启动 JVM 执行它
- 附带 src.zip,内含 Java 标准类库源码,方便开发者查阅实现逻辑
- bin 目录下全是命令行工具,IDE(如 IntelliJ)底层也调用它们
- 开发 Java 项目必须装 JDK;装了 JDK 就自动有了 JRE 和 JVM,无需单独安装
简单说:写代码用 JDK,运行程序用 JRE,而 JVM 是所有 Java 程序实际执行的“大脑”。三者分工明确,缺一不可,但日常开发中,装好 JDK 就全齐了。

















