jdk是开发工具包,含编译器等工具;jre是运行环境,含jvm和核心类库;jvm是执行字节码的虚拟机引擎;三者为jdk>jre>jvm的包含关系。

JDK、JRE、JVM 分别是什么
JDK(Java Development Kit)是Java开发工具包,面向开发者,包含编译、调试、打包等全套工具,比如 javac 编译器、java 启动器、jconsole 监控工具,以及文档和示例程序。
JRE(Java Runtime Environment)是Java运行时环境,面向普通用户或部署人员,用于运行已编译的Java程序。它由JVM + Java核心类库(如 java.lang、java.util)组成。
JVM(Java Virtual Machine)是Java虚拟机,是真正执行字节码的引擎。它不识别 .java 源文件,只加载并解释执行 .class 字节码文件,并通过调用操作系统API完成底层操作。
三者之间的嵌套关系
它们是层层包含的关系:
- JDK 包含 JRE(即开发工具包自带运行环境)
- JRE 包含 JVM(即运行环境的核心执行引擎)
- JVM 是最底层、最轻量的部分,单独存在时只能运行字节码,但无法编译源码或提供标准类库支持
所以:JDK > JRE > JVM —— 不是并列,而是“大包套小包”。
安装与使用场景怎么选
根据角色决定装什么:
- 你是开发者:装JDK就够了,它自带JRE和JVM,能编译也能运行
- 你只是运行Java程序(比如启动一个jar包):只需安装JRE,省空间、免冗余
- 你只做底层研究或嵌入式定制:可仅部署JVM + 手动补必要类库,但极少在生产中这样用
注意:JDK安装后通常有两个 jre 文件夹——一个在JDK目录内(私有JRE,供开发工具自身运行),一个在Java根目录下(公共JRE,供外部程序调用)。环境变量一般指向JDK内的jre,无需额外配置公共JRE。
为什么Java能跨平台
关键就在JVM:
- Java源码 →
javac编译为统一格式的字节码(.class),与操作系统无关 - 不同系统(Windows/Linux/macOS)各自有对应的JVM实现,负责把同一份字节码翻译成对应平台的机器指令
- JRE补充了跨平台所需的类库(如文件路径处理、编码转换),确保行为一致
所以“一次编写,到处运行”的实质是:字节码不变,JVM适配,类库兜底。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










