JDK、JRE、JVM 是什么?有什么关系?【Java】
论如今就业形势:前端学java
目录
- 简述
- JVM(Java Virtual Machine)
- JVM是什么?
- JVM的作用:
- JRE(Java Runtime Environment)
- JRE是什么?
- JRE的作用:
- JDK(Java Development Kit)
- JDK是什么?
- JDK的作用:
- Java 程序从源代码到运行的流程(简要)
- 简单记
简述
JVM 是运行 Java 字节码的虚拟机(运行时引擎);JRE 是运行 Java 程序所需的运行时环境(包含 JVM + 标准类库);JDK 是为开发 Java 程序提供的工具包(包含 JRE + 编译器等开发工具)。
JVM(Java Virtual Machine)
JVM是什么?
JVM是一套虚拟机规范及其实现(通常用 C/C++ 实现),负责执行 .class(Java 字节码)文件。
JVM的作用:
- 类加载(Class Loader)
- 字节码验证(Bytecode Verifier)
- 执行引擎(解释器 + JIT 编译器)
- 内存管理(堆、栈、方法区/元空间)和垃圾回收(GC)
关键点:JVM 是平台相关的实现(每个平台有对应实现),但执行的字节码是平台无关的 → “一次编译,到处运行”。
JRE(Java Runtime Environment)
JRE是什么?
JRE是运行 Java 程序所需的环境,包含 JVM + Java 标准类库(核心 API) + 其它运行时文件。
JRE的作用:
用途:如果你只是要“运行” Java 程序(不是开发),只需要 JRE 即可。
注意: 在现代发行版里(尤其 OpenJDK 的很多分发),通常直接以 JDK 的形式提供运行时;传统上有单独的 JRE 包,但现在各家策略略有不同(JDK 常带运行时,且可以用 jlink 定制最小运行时镜像)。
JDK(Java Development Kit)
JDK是什么?
JDK是Java 的开发工具包,包含 JRE(因此包含 JVM),并额外提供开发工具:
- javac(Java 编译器)
- jar(打包工具)
- javadoc、jdb、jlink 等工具
JDK的作用:
用途:如果你要写代码、编译、调试或打包,就需要安装 JDK。
Java 程序从源代码到运行的流程(简要)
- MyApp.java(源文件)
- javac MyApp.java → 生成 MyApp.class(字节码)
- java MyApp → 启动 JVM,JVM 加载字节码并执行,JRE 提供标准库支持
简单记
- JVM → 只是执行引擎,跑字节码
- JRE → JVM + Java 核心类库(让 JVM 能跑起来)
- JDK → JRE + 开发工具(编译器 javac、打包工具 jar 等)
┌───────────────────────────────┐
│ JDK │
│ ┌─────────────────────────┐ │
│ │ JRE │ │
│ │ ┌───────────────────┐ │ │
│ │ │ JVM │ │ │
│ │ └───────────────────┘ │ │
│ └─────────────────────────┘ │
└───────────────────────────────┘