Java的JDK、JRE、JVM关系与作用
java中的JDK、JRE和JVM是三个核心组件,各自承担不同角色,且存在层级依赖关系
1. JVM(Java Virtual Machine,Java虚拟机)
- 是什么:
JVM是虚拟的计算机,能够执行编译后的Java字节码(.class
文件)。它是Java跨平台能力的核心。 - 作用:
- 解释或编译字节码为机器码(通过JIT编译器)。
- 管理内存(如垃圾回收)。
- 提供运行时环境,隔离底层操作系统差异。
- 特点:
- 平台相关:不同操作系统需要对应的JVM实现。
- 无需独立安装:作为JRE的一部分存在。
2. JRE(Java Runtime Environment,Java运行时环境)
- 是什么:
JRE是运行Java程序的最小环境,包含JVM和基础类库(如java.lang
、java.util
等)。 - 作用:
- 提供运行Java应用所需的依赖(类库、JVM等)。
- 用户只需安装JRE即可运行已编译的Java程序。
- 特点:
- 不包含开发工具(如编译器、调试器)。
- 通常作为JDK的子集存在,也可单独安装。
3. JDK(Java Development Kit,Java开发工具包)
- 是什么:
JDK是Java开发的核心工具集,包含JRE及开发工具(如编译器、调试器)。 - 作用:
- 编译源代码(
javac
命令生成.class
文件)。 - 打包应用(
jar
工具)、生成文档(javadoc
)、调试(jdb
)等。 - 运行程序(通过内嵌的JRE)。
- 编译源代码(
- 特点:
- 面向开发者:必须安装JDK才能编写和构建Java程序。
- 包含JRE:因此无需单独安装JRE即可运行程序。
三者的关系
- 层级包含:
JDK ⊃ JRE ⊃ JVM- 安装JDK时,会同时安装JRE和开发工具。
- 安装JRE时,会包含JVM和核心类库。
- 协作流程:
- 开发阶段:使用JDK中的
javac
编译.java
文件为.class
字节码。 - 运行阶段:通过JRE中的
java
命令启动JVM,加载并执行字节码。
- 开发阶段:使用JDK中的
- 用户场景:
- 开发者:需安装JDK(包含JRE和工具)。
- 终端用户:只需安装JRE即可运行程序(但现代Java分发通常建议直接安装JDK以获得更新支持)。
图示关系
JDK(开发工具包)
│
├── JRE(运行时环境)
│ │
│ ├── JVM(执行引擎)
│ └── 核心类库(java.lang, java.util等)
│
├── 编译器(javac)
├── 调试器(jdb)
└── 其他工具(jar, javadoc等)
总结
- JVM:执行字节码的“引擎”,实现跨平台。
- JRE:运行环境 = JVM + 类库。
- JDK:开发环境 = JRE + 开发工具。
- 关系:JDK > JRE > JVM,三者逐级依赖,共同支撑Java的“一次编写,到处运行”。