JVM、JDK、JRE的区别与联系

JVM、JDK、JRE的区别与联系

一、逐个理解核心概念

1. JVM (Java Virtual Machine - Java 虚拟机)

  • 定义:JVM 是一个虚构的计算机,是运行所有 Java 程序的核心。它是 Java 实现 "一次编写,到处运行 (Write Once, Run Anywhere)" 跨平台特性的关键。

  • 类比:可以把 JVM 想象成一个 "Java 程序的播放器",不管你的操作系统是 Windows、Mac 还是 Linux,只要安装了对应版本的 JVM,它就能读懂并执行编译后的 Java 字节码(.class 文件)。

  • 核心作用

    • 加载并执行 Java 字节码

    • 管理内存(堆、栈、方法区等)

    • 进行垃圾回收(GC)

    • 提供跨平台能力

  • 注意:JVM 本身不能单独运行 Java 程序,它需要依赖类库的支持。

2. JRE (Java Runtime Environment - Java 运行时环境)

  • 定义:JRE 是运行 Java 程序所必需的最小环境,它是 JVM + 运行 Java 程序所需的核心类库(如 java.langjava.util 等)的集合。

  • 类比:如果 JVM 是播放器,那 JRE 就是 "播放器 + 播放所需的基础解码库"。

  • 适用场景:如果你只需要运行已有的 Java 程序(比如运行一个 Java 写的软件),安装 JRE 就足够了。

  • 包含内容

    • JVM(Java 虚拟机)

    • 核心类库(Java API)

    • 运行时支持文件

3. JDK (Java Development Kit - Java 开发工具包)

  • 定义:JDK 是用于开发 Java 程序的完整工具包,它包含了 JRE,还额外提供了编译、调试等开发工具。

  • 类比:JDK 相当于 "播放器 + 解码库 + 视频剪辑 / 制作工具"。

  • 适用场景:如果你需要编写、编译、调试 Java 代码(比如开发一个 Java 项目),必须安装 JDK。

  • 包含内容

    • JRE(完整的运行时环境)

    • 开发工具:javac(编译器,将 .java 源文件编译为 .class 字节码)、java(运行工具)、javadoc(文档生成工具)、jdb(调试工具)等

    • 示例代码、开发文档

二、三者的关系(可视化)

graph TD A[JDK] --> B[JRE] B --> C[JVM] A --> D[开发工具 javac/javadoc 等] B --> E[Java 核心类库] C --> F[跨平台运行字节码]

简单总结层级关系:JDK ⊃ JRE ⊃ JVM(JDK 包含 JRE,JRE 包含 JVM)

三、实际使用场景对比

场景

需要安装

核心工具 / 组件

运行别人写好的 Java 程序

JRE

java 命令(运行)

自己编写、编译、调试 Java 代码

JDK

javac 命令(编译)、jdb(调试)

理解 Java 跨平台原理

重点理解 JVM

字节码解释 / 执行

四、总结

  1. JVM 是执行 Java 字节码的虚拟机,是跨平台的核心,只负责运行,不包含类库;

  2. JRE 是运行 Java 程序的最小环境,包含 JVM + 核心类库,仅用于运行,不能开发;

  3. JDK 是 Java 开发的完整工具包,包含 JRE + 开发工具(编译器、调试器等),是开发者的必备工具。

记住核心区别:开发用 JDK,仅运行用 JRE,跨平台靠 JVM

Java 转义符 2026-02-05
什么是字节码?采用字节码的好处是什么? 2026-02-25