一、逐个理解核心概念
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.lang、java.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(调试工具)等示例代码、开发文档
二、三者的关系(可视化)
简单总结层级关系:JDK ⊃ JRE ⊃ JVM(JDK 包含 JRE,JRE 包含 JVM)
三、实际使用场景对比
四、总结
JVM 是执行 Java 字节码的虚拟机,是跨平台的核心,只负责运行,不包含类库;
JRE 是运行 Java 程序的最小环境,包含 JVM + 核心类库,仅用于运行,不能开发;
JDK 是 Java 开发的完整工具包,包含 JRE + 开发工具(编译器、调试器等),是开发者的必备工具。
记住核心区别:开发用 JDK,仅运行用 JRE,跨平台靠 JVM。