1. JVM (Java Virtual Machine, Java虚拟机)
定义:JVM 是执行 Java 字节码的虚拟计算机
主要功能:
-
提供 Java 字节码的运行环境
-
将字节码解释/编译为机器码执行
-
内存管理(包括垃圾回收)
-
平台无关性的关键("Write Once, Run Anywhere")
特点:
-
不同平台有不同实现的 JVM(Windows、Linux、Mac 等)
-
不包含 Java 编译器或开发工具
-
不包含 Java 类库
2. JRE (Java Runtime Environment, Java运行环境)
定义:Java 程序的运行环境
包含内容:
-
JVM
-
Java 核心类库(如 java.lang, java.util 等)
-
其他支持文件
主要用途:
-
运行已编译的 Java 程序(.class 文件或 .jar 文件)
-
不包含开发工具(如编译器、调试器等)
特点:
-
普通用户只需安装 JRE 即可运行 Java 程序
-
体积比 JDK 小
3. JDK (Java Development Kit, Java开发工具包)
定义:Java 开发工具包
包含内容:
-
JRE(因此也包含 JVM)
-
开发工具(如 javac, javadoc, jdb 等)
-
额外的类库(开发专用)
主要用途:
-
开发 Java 应用程序
-
编译 Java 源代码(.java 文件)
-
调试 Java 程序
特点:
-
开发者必须安装 JDK
-
包含完整的 Java 开发环境
三者的关系图示
JDK = JRE + 开发工具
JRE = JVM + 核心类库
使用场景对比
组件 | 使用者 | 主要用途 | 是否包含编译器 |
---|---|---|---|
JDK | Java开发者 | 开发、编译、运行Java程序 | 是 |
JRE | 终端用户 | 运行已编译的Java程序 | 否 |
JVM | 系统底层支持 | 执行Java字节码,提供运行环境 | 否 |
实际应用示例
-
开发者:
-
安装 JDK
-
使用
javac
编译 .java 文件 -
使用
java
命令运行程序(此时使用 JRE 中的 JVM)
-
-
普通用户:
-
只需安装 JRE
-
双击 .jar 文件运行程序(由 JRE 中的 JVM 执行)
-
版本兼容性
-
高版本 JDK 可以编译低版本 JRE/JVM 兼容的代码(通过
-source
和-target
参数) -
低版本 JRE 无法运行高版本 JDK 编译的代码(会出现 UnsupportedClassVersionError)
开启新对话