Java 与 JVM 是什么
JDK/JRE/JVM、本站 backend 技术栈。
Java 与 JVM 是什么
这一课你将能做到
- 用一张图说清楚 JDK、JRE、JVM 各自负责什么,以及
.java从源码到运行经过了哪些环节 - 在本机确认已安装 JDK 17+,并用一条命令跑通第一个 Java 程序
- 说出本站后端(Spring Boot + MySQL + Redis)为什么选 Java,以及「编译一次、到处运行」对部署意味着什么
为什么要学
本站的后端 API 跑在 Spring Boot 上:请求先到 Controller,业务逻辑在 Service,数据存 MySQL,热点数据放缓存 Redis。这些 .java 源文件不是直接交给 CPU 执行的——它们先被编译成字节码,再由 JVM(Java 虚拟机) 执行。
人话:你写的 Java 代码像一份「国际通用剧本」,JVM 是部署在 Windows、Linux、macOS 上的「剧团」,负责把同一份剧本演成本机动作。你以后开发、部署、排错时遇到的「找不到主类」「JDK 版本不对」「编译失败」,全都能在这一层找到根源。不理解 JVM 这一环,问题就只能靠猜。
先建立图像
你写的 .java 文件
│ javac(编译器,在 JDK 里)
▼
.class 字节码(平台无关的中间码)
│ java 命令启动 JVM
▼
JVM 执行:解释执行 + JIT 把热点代码编译成本机指令
│
▼
内存由 JVM 管理:分配对象、垃圾回收(GC)
三个名字的关系:
| 名字 | 人话 | 你日常碰到 |
|---|---|---|
| JVM | 执行字节码的虚拟机 | 管内存、线程、GC;有 HotSpot 等实现 |
| JRE | 只跑程序不写代码的环境 | 现代 JDK 已包含运行能力,单独装 JRE 已过时 |
| JDK | 开发工具箱 = 编译器 + 标准库 + JVM | javac、java、jar 都在 JDK 的 bin 目录里 |
记忆口诀:JDK 包着 JRE,JRE 包着 JVM。写代码必须装 JDK。
跟着做
步骤 1:确认 JDK 版本
打开终端(Windows 用 PowerShell):
java -version
javac -version
期望输出类似(两者主版本一致):
openjdk version "17.0.10" 2025-01-21
javac 17.0.10
判定规则:
- 两条都有且 ≥ 17:直接往下走,本课程全程用 JDK 17+ 语法
- 只有
java没有javac:装的是运行环境,去装 JDK(推荐 Eclipse Temurin 17 或 21) - 报「不是内部或外部命令」:PATH 没配好,把 JDK 的
bin目录加进环境变量 PATH 后重开终端
步骤 2:跑通第一个程序
新建文件夹 java-lab,在里面新建文本文件 Hello.java(注意:Windows 要显示文件扩展名,防止存成 Hello.java.txt),输入:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, CodeRoadMap!");
}
}