JDK、JRE、JVM 的区别是什么
JDK、JRE 和 JVM 是 Java 编程语言相关联的三个不同组件,它们在 Java 程序的开发和运行中扮演着不同的角色。
JDK(Java Development Kit):
- 定义:JDK 是 Java 开发工具包,它包含了编写 Java 程序所需的编译器(javac)、运行时环境(JRE)、工具和库。
- 目的:JDK 使开发者能够开发 Java 应用程序。
- 核心类与方法:JDK 中的核心类和方法分布在 java.lang、java.util 等包中,例如 String 类、ArrayList 类等。
JRE(Java Runtime Environment):
- 定义:JRE 是 Java 程序的运行时环境,包括 JVM 和 Java 类库。它提供了运行 Java 程序所需的所有资源。
- 目的:JRE 确保 Java 程序能够在不同的操作系统上运行。
- 核心类与方法:JRE 包含的核心类和方法是 Java 标准库的一部分,如 java.io、java.net 等。
JVM(Java Virtual Machine):
- 定义:JVM 是一个虚拟机,它负责执行 Java 字节码文件。它是 Java 跨平台特性的核心。
- 目的:JVM 使得 Java 程序能够在任何安装了 JVM 的平台上运行,无需修改源代码。
- 核心类与方法:JVM 本身不包含 Java 类库,它执行的是编译后的字节码(.class 文件)。
区别对比表格:
特性 | JDK | JRE | JVM |
---|---|---|---|
定义 | 开发工具包,包含编译器、工具、库和 JRE。 | 运行时环境,包含 JVM 和 Java 类库。 | 虚拟机,执行 Java 字节码。 |
目的 | 用于开发 Java 应用程序。 | 用于运行 Java 应用程序。 | 使 Java 程序跨平台运行。 |
包含组件 | javac 编译器、JRE、工具和库。 | JVM、Java 类库。 | 仅包含执行字节码的虚拟机。 |
使用场景 | Java 程序的开发环境。 | Java 程序的生产环境(运行时)。 | 任何需要运行 Java 程序的系统环境。 |
代码案例1(使用 JDK 编译 Java 程序):
// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
使用 JDK 中的 javac
编译器编译上述代码:
javac HelloWorld.java
这将生成一个 HelloWorld.class
文件,该文件包含 JVM 可以执行的字节码。
代码案例2(运行 Java 程序):
使用 JRE 运行上例中编译的 HelloWorld.class
文件:
java HelloWorld
JVM 将加载 HelloWorld.class
文件并执行其中的字节码,输出 "Hello, World!"。