本文最后更新于6 天前,其中的信息可能已经过时,如有错误请发送邮件到1464396208@qq.com
章节详细知识点
🖥️ 一、JVM:Java 虚拟机
主题内容
从”写代码到底需要什么东西”切入,首先引出三大要素中的第一项——JVM。以写过的 Hello World 为例,说明代码最终必须有一个”真正运行它的地方”,这个地方就是 JVM。
核心概念
- JVM 是
Java Virtual Machine(Java 虚拟机)三个单词的缩写,是真正运行 Java 程序的地方。 - 没有虚拟机,代码就”没地儿运行”,因此它是运行 Java 程序必不可少的基础设施。
核心特性/工作原理
- JVM 负责执行编译后的字节码(class 文件),是 Java “一次编译、到处运行”(跨平台)特性的关键载体。
- 在视频给出的三层结构中,JVM 处于最底层、被包含的位置。
对比/示例/注意事项
- 注意事项:正确拼写应为 Virtual Machine(虚拟机),注意与 “垂直机器” 无关。
- JVM 本身不直接等同于”开发环境”,它只是运行环境的一部分,后续章节会说明它与 JDK、JRE 的关系。
📦 二、核心类库:Java 预先写好的代码
主题内容
引出 JVM 之后,视频提出第二个必要要素——核心类库,并回到 Hello World 代码说明”哪些东西是 Java 已经替我们写好的”。
核心概念
- 核心类库:Java 已经预先写好、可以直接拿来使用的一批代码的统称。
- 程序员无需自己实现这些功能,直接调用即可。
核心特性/工作原理
- 在 Hello World 示例中,
System、out、println这三个部分都是 Java 事先定义好的内容。 - 它们组合在一起后,作用是把小括号里的内容直接展示(打印)出来,每个单词都有其特定含义。
对比/示例/注意事项
- 代码示例(对应视频中的 Hello World):
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
- 其中
System.out.println(...)就是核心类库的典型用法:System是类、out是输出流对象、println是打印换行的方法。 - 注意事项:核心类库是”运行期”也要用到的(不像某些开发工具只在开发期使用),因此它在 JDK 与 JRE 中都存在。
🛠️ 三、开发工具:编译、运行与调试
主题内容
指出,光有 JVM 和核心类库还不够,程序员还需要一批”开发工具”来完成编译、运行、调试等动作。
核心概念
开发工具是 JDK 中帮助开发者把 .java 源文件变成可运行的 .class 文件、并运行和排查问题的一组命令行工具。
核心特性/工作原理
| 工具 | 作用 |
|---|---|
javac | 编译工具,把编写好的 .java 文件编译成 .class 文件 |
java | 运行工具,用来运行 class 文件中的代码 |
jdb | 调试工具,代码较多时逐步查看程序如何运行 |
jhat | 堆转储分析工具,可监控程序运行时的内存 |
对比/示例/注意事项
- 命令示例(编译 + 运行):
javac HelloWorld.java # 编译:生成 HelloWorld.class
java HelloWorld # 运行 class 文件
- 注意事项:开发工具数量很多,只是举例
javac、java、jdb、jhat等;其中部分工具(如编译、调试工具)只在开发阶段使用,这为后面区分 JDK 与 JRE 埋下伏笔。 - 与 C 语言生态的 gdb 不同。
💼 四、JDK:Java 开发工具包
主题内容
将前面三要素(JVM + 核心类库 + 开发工具)汇总,指出它们组合成的整体就是 JDK。
核心概念
- JDK 全称
Java Development Kit,即 Java 开发工具包。 - 简单理解:程序员想要编写代码并成功运行,只需要安装一个 JDK 即可。
核心特性/工作原理
- JDK 包含三部分内容:
- JVM:Java 程序真正运行的地方;
- 核心类库:Java 事先写好的东西;
- 开发工具:如
javac、java、jdb、jhat等。
- 三者共同保证”能编写、能编译、能运行、能调试”的完整开发闭环。
对比/示例/注意事项
- JDK 是三者中包含内容最多、层级最高的概念,它内部包含 JRE,JRE 又包含 JVM。
- 注意事项:对开发者(需要写代码的人)来说,装 JDK 是标准选择;但如果只是”运行别人已编译好的程序”,完整 JDK 中会有用不到的部分(占用硬盘空间),此时引出下一章 JRE 的概念。
▶️ 五、JRE:Java 运行环境
主题内容
引入一个新场景:代码已经写完、编译完成,只要把 class 文件交给别人运行,对方不再需要开发。此时不需要完整 JDK,只需要 JRE。
核心概念
- JRE 全称
Java Runtime Environment,即 Java 运行环境 - Java 会把”运行期必需的部分”单独抽离出来组成 JRE,特点是短小、不占过多硬盘空间。
核心特性/工作原理
- JRE 由三部分组成:
- JVM:代码真正运行的地方(必需);
- 核心类库:运行代码时需要用到 Java 预写好的内容(必需);
- 运行工具:如运行代码的
java工具(必需)。
- 对于”已有 class 文件、只需运行”的场景,
javac编译工具、jdb调试工具等都不再需要,因此不放入 JRE。
对比/示例/注意事项
| 对比维度 | JDK(Java 开发工具包) | JRE(Java 运行环境) |
|---|---|---|
| 全称 | Java Development Kit | Java Runtime Environment |
| 定位 | 开发 + 运行 | 仅运行 |
| 组成 | JVM + 核心类库 + 开发工具(含编译/调试/运行工具) | JVM + 核心类库 + 运行工具 |
| 体积 | 较大 | 较小、轻量 |
| 适用人群/场景 | 需要写代码的开发者 | 只需运行 class 文件的用户 |
- 注意事项:很多课程会忽略”JRE 中也包含运行工具”这一点,特别强调——运行代码的
java工具是必需的,因此 JRE 内部也有工具,只是不含编译、调试等开发期工具。
🔗 六、小结:JDK、JRE、JVM 三者的定义与包含关系
主题内容
最后用三个问题对全课做总结:JDK 是什么、JRE 是什么、三者的包含关系是什么。
核心概念
- JDK = Java 开发工具包 = JVM + 核心类库 + 开发工具(含
javac、java、jdb、jhat等)。 - JRE = Java 运行环境 = JVM + 核心类库 + 运行工具(如
java)。 - 包含关系:JDK 包含 JRE,JRE 包含 JVM,即
JDK ⊃ JRE ⊃ JVM。
核心特性/工作原理
- 三者是”逐层包含”的关系:内容最多的 JDK 在最外层,最核心、最底层的 JVM 在最内层。
- 这种分层设计体现了”按需分配”:开发选 JDK,只运行选 JRE,而 JVM 始终是运行代码的基石。
对比/示例/注意事项
- 注意事项:本视频采用经典的”JDK 包含 JRE、JRE 包含 JVM”教学模型。现代 JDK(JDK 11 起)已不再单独发行独立 JRE,运行环境与开发工具统一打包,但概念上的层次关系仍是理解 Java 体系的重要基础。
- 同时也标志着”Java 入门(第一个模块)”学习完毕,后续章节代码量将逐步增多。
总结
概念关系图
flowchart TD
START(["程序员编写并运行 Java 代码"]) --> NEED["需要一个完整的运行环境"]
NEED --> V1["JVM 虚拟机
代码真正运行的地方"]
NEED --> V2["核心类库
Java 预先写好的代码"]
NEED --> V3["开发工具
javac / java / jdb / jhat 等"]
V1 & V2 & V3 --> SCENE{"使用场景判断"}
SCENE -->|"需要编写 + 编译 + 运行"| JDK["JDK
Java Development Kit"]
SCENE -->|"只需运行现成的 class 文件"| JRE["JRE
Java Runtime Environment"]
JDK --> REL["三者包含关系"]
JRE --> REL
REL --> OUT["JDK ⊃ JRE ⊃ JVM"]
核心要点速记
| 概念 | 一句话总结 |
|---|---|
| JVM | Java 虚拟机(Java Virtual Machine),是 Java 程序真正运行的地方 |
| 核心类库 | Java 预先写好的代码(如 System.out.println),直接调用即可 |
| 开发工具 | 编译(javac)、运行(java)、调试(jdb)等命令行工具 |
| JDK | Java 开发工具包 = JVM + 核心类库 + 开发工具,面向”需要写代码”的开发者 |
| JRE | Java 运行环境 = JVM + 核心类库 + 运行工具,面向”只需运行 class 文件”的场景 |
| 包含关系 | JDK ⊃ JRE ⊃ JVM,内容由多到少、层级由高到低 |
| 场景选择 | 要开发装 JDK,只运行装 JRE |



