JDK是面向开发者的完整工具包,含编译器(javac)、调试工具、构建工具及完整类库;JRE是面向用户的精简运行环境,仅含JVM、基础类库和java命令,用于运行已编译程序。

JDK 是给开发者用的开发工具包,JRE 是给普通用户用的运行环境。两者核心区别在于:JDK 包含 JRE,但多了编译、调试、打包等开发所需工具;JRE 只负责运行已编译好的 Java 程序,不提供源码处理能力。
JDK 的功能范围与适用场景
JDK(Java Development Kit)是完整的 Java 开发环境,包含:
• javac:Java 源代码编译器,把 .java 文件转成 .class 字节码
• java:启动 JVM 运行字节码(这个命令本身也属于 JRE,但 JDK 提供的是完整可调试版本)
• jdb、jconsole、jvisualvm 等调试与监控工具
• jar、javadoc、jps 等构建与文档工具
• 完整的 Java 类库(rt.jar 等)和头文件(用于 JNI 开发)
适合场景:写 Java 代码、做单元测试、构建项目(Maven/Gradle)、排查线上问题、开发 Java 工具或中间件。
JRE 的功能范围与适用场景
JRE(Java Runtime Environment)是精简版运行时环境,仅包含:
• JVM(Java 虚拟机):解释执行字节码的核心引擎
• 基础类库(如 java.lang、java.util):支撑程序运行所必需的 API
• java 命令(用于运行程序),但不含 javac 或其他开发工具
适合场景:在服务器或客户机上部署并运行已打包好的 Java 应用(如 Tomcat 上跑的 Web 应用、桌面端的 PDF 阅读器、老版 Minecraft 启动器);不需要改代码,只关心“能不能跑起来”。
常见混淆点说明
• 安装 JDK 后,默认自带 JRE(通常在 jdk/jre 目录下),所以开发者一般无需单独装 JRE
• Java 11 起,Oracle 不再单独提供 JRE 下载,OpenJDK 社区也逐步弃用独立 JRE 构建;现在更推荐用 jlink 自定义最小化运行时镜像
• 某些嵌入式或受限环境会使用 JRE 的精简变体(如 Java SE Embedded),但本质仍是“仅运行、不开发”
怎么选?看你的角色和任务
• 如果你写 Java、改配置、看日志、调接口 → 装 JDK
• 如果你只是双击启动一个 .jar 文件,或运维人员部署现成 WAR 包 → JRE 就够了(不过现在多数直接装 JDK 更省事)
• Docker 镜像中常用 openjdk:version-jdk-slim 或 openjdk:version-jre-slim,根据是否需构建阶段区分

















