画出 `JDK`、`JRE`、`JVM` 的包含关系
覆盖章节:and may not be available in a future release . JDK 是开发工具包,包含 JRE;JRE 提供运行环境并包含 JVM;JVM 执行 .class,解决跨平台运行问题,但不能把三者说成同级组件。
诊断题
JDK、JRE、JVM 关系时,为什么只答“都能运行 Java”不够?请按包含关系和 .class 执行位置推演。答案骨架
我能 1) 说明 JDK 面向开发,包含编译、运行和工具能力;2) 说明 JRE 面向运行,提供类库和 JVM;3) 指出 JVM 负责执行 .class 字节码以支撑跨平台;4) 区分运行已有程序与编译源码的边界;5) 把这组关系作为后续 JVM 内存和执行机制的入口。
边界追问
JRE 而没有 JDK,是否一定不能部署 Java 应用?反过来编译源码时只靠 JRE 又会怎样?边界答案
JRE 能运行已有 .class 或 jar,但缺少 javac 等开发工具;编译、打包、诊断工具通常需要 JDK。判断标准是任务属于运行还是开发/排障。记忆锚点
JDK 管开发,JRE 管运行,JVM 管执行 .class。衍生拓展
- 对比
javac编译与java启动职责;- 继续看jar、classpath与模块路径;- 复习跨平台口号 write once run anywhere 的实现边界
落地场景
在一台只运行服务的机器上,先确认运行环境:
1java -version
2# 有输出说明可运行字节码若要把 Hello.java 编成 .class,还要检查 javac,这属于 JDK 能力。