说清 JDK、JRE、JVM 的包含关系与核心职责
JDK 是 Java 开发工具包,包含 JRE 和编译器等开发工具;JRE 是 Java 运行环境,包含 JVM 和核心类库;JVM 是 Java 虚拟机,负责将 .class 字节码文件翻译成当前操作系统能执行的机器码。三者是包含关系,JVM 屏蔽了底层系统差异,是跨平台的核心。
诊断题
JVM 扮演了什么核心角色?答案骨架
我能解释三者的包含关系及运行机制
JDK包含JRE和开发工具(如javac)JRE包含JVM和核心类库(如rt.jar)- Java 代码先通过编译器编译为与平台无关的
.class字节码 JVM负责在运行时将字节码解释/编译为当前平台的机器指令- 因此
JVM屏蔽了操作系统差异,是实现'一次编写,到处运行'的核心关键。
边界追问
.class 字节码文件而不安装 JDK,仅安装 JRE 足够保证 Java 程序的正常运行吗?边界答案
JRE 内部已经包含了运行 Java 程序所需的 JVM 及核心基础运行类库。只有在需要进行 Java 源代码的编写和编译(使用 javac)时,才必须安装完整的 JDK。生产环境部署通常仅需 JRE。记忆锚点
JDK 开发,JRE 运行,JVM 跨平台;包含关系层层递进。衍生拓展
- 了解 JDK 9 引入的模块化(JPMS)系统对 JRE 目录结构(如 rt.jar 消失)的颠覆
- 探讨不同操作系统下 JVM 动态链接库的文件后缀差异
- 学习如何使用
jdeps工具精简并创建自定义 JRE
落地场景
在生产服务器上检查 Java 运行环境的目录结构,确认运行时所需组件的物理位置:
1# 查看完整 JDK 下的 JRE 目录结构
2ls jdk1.8.0_45/
3# bin(开发工具如 javac) lib(类库) jre(运行环境)
4ls jdk1.8.0_45/jre/
5# bin(包含jvm动态库) lib(核心运行类库)
6
7可见 `JVM` 的可执行文件或动态链接库通常就在 `jre/bin/server` 或 `jre/bin/client` 目录下。