为什么学 Java,以及把环境跑起来
先泼一盆冷水:Java 不是"最好玩"的语言,语法啰嗦、样板代码多,写个空 main 都要整行 public static void main(String[] args)。但它是企业界的承重墙——银行、电商、政务、中台,背后跑的一大半是 Java。它的优势是:稳定、就业岗位多、生态成熟,你今天学的东西,十年后大概率还在用。
论三个名词先分清:JDK、JRE、JVM
新手第一周必被这三个缩写绕晕。其实是一层套一层的关系,像套娃:JVM(Java Virtual Machine,Java 虚拟机)是真正跑字节码的那台"虚拟电脑";JRE(Java Runtime Environment)= JVM + 核心类库,只负责"跑",不负责"编译";JDK(Java Development Kit)= JRE + 编译器(javac)+ 调试工具,是"开发套装"。
一句话记:装软件、只跑不写代码,用 JRE;自己写代码、要编译,装 JDK。现在官方发行版早就把三者打包在一起了,你下载一个 JDK 就行,不用纠结。
版本怎么选:Oracle 每 6 个月发一个新版本,但每三年出一个 LTS(Long-Term Support,长期支持版)。生产环境一律选 LTS。目前学习基线是 JDK 21 LTS(2023 年 9 月发布),最新 LTS 是 JDK 25 LTS(2025 年 9 月发布,以官网最新稳定版为准)。本页代码默认按 JDK 21 写,标注 Java 16+ 的特性即 16 及以上可用。
环境搭建:三步搞定
java -version,能看到版本号就算成功。Hello.java:第一个程序,以及它的"编译 → 运行"全过程
// 文件名必须叫 Hello.java,因为 public class 名字叫 Hello
public class Hello {
// main 方法是程序入口,固定写法,背下来
public static void main(String[] args) {
System.out.println("Hello, Java! 我终于跑起来了");
}
}
在终端里手动编译运行(理解 IDEA 在背后替你干了什么)
# 第 1 步:javac 把 .java 源码编译成 .class 字节码
javac Hello.java
# 第 2 步:java 命令启动 JVM,执行这个类
java Hello
Hello, Java! 我终于跑起来了
论编译运行过程到底发生了什么
你写的 Hello.java 是给人看的。javac 这个编译器把它翻译成 JVM 听得懂的 Hello.class 字节码——注意,字节码不是机器码,不能直接被 CPU 跑。真正运行时,JVM 再把字节码翻译成当前操作系统的机器指令。
这就是"Write Once, Run Anywhere(写一次,到处跑)"的原理:Windows 上编译出来的 .class,扔到 Linux 服务器上,只要那台机器装了 JVM,就能跑。你电脑里那个 JVM,就是 Java 的"翻译官"。
环境常见小问题:三条自救口诀
问题 1:终端敲 java -version 报 "command not found"
→ JDK 没装,或装了但 PATH 没配。重装时勾选"加入 PATH"。
问题 2:javac Hello.java 报 "error: code too large" 之类离谱错误
→ 多半是文件编码不对,或者文件名和 public class 名对不上。
问题 3:IDEA 里右键 Run 没反应 / 报 "No main class"
→ 类名、文件名一致;确认 main 方法签名一字不差:
public static void main(String[] args)
文件名和 public 类名不一致,编译直接报错。你写 public class Hello,文件名就必须是 Hello.java,大小写都不能差。IDE 里右键新建类会自动帮你对上,命令行手搓时最容易栽在这。另外,Java 是强类型语言,每个变量都要先声明类型,忘加分号、漏花括号都是高频报错——别慌,IDE 会用红线标出位置。
1.(概念题)JDK、JRE、JVM 三者什么关系?我自己开发要装哪个?
查看答案
答案:JVM 跑字节码,JRE = JVM + 核心类库(只跑不编),JDK = JRE + 编译器和工具。开发装 JDK。JDK 11 起不再单独发布 JRE。
2.(选择题)下面哪个是 LTS 版本?A. JDK 23 B. JDK 21 C. JDK 24 D. JDK 22
查看答案
答案:B。21 是 2023.9 发布的 LTS。22/23/24 都是 6 个月生命周期的非 LTS,生产别用。
3.(排错题)敲 javac Hello.java 报 class Hello is public, should be declared in file Hello.java,怎么回事?
查看答案
答案:文件名和 public 类名不一致。public class Hello 必须放在 Hello.java 里,大小写都要对上。
4.(对比题)Oracle JDK 和 Adoptium Temurin 有什么区别?
查看答案
答案:两者都基于 OpenJDK 源码编译。Oracle JDK 是 Oracle 打的包,商用要付费订阅;Temurin 是 Eclipse 基金会打的,免费可商用,功能等价。初学选 Temurin。