一句话
Java 是 90 年代中期诞生的强类型、面向对象、跑在 JVM(Java Virtual Machine)上的语言。25+ 年来一直是企业服务端的主力——Android(早期)、银行核心系统、大数据(Hadoop / Spark)、电商后端都吃这碗饭。
现状
| 情况 | |
|---|---|
| 语言版本 | Java 25 LTS(2025-09)当前;Java 21 LTS 仍主流支持 |
| JDK 发行商 | Oracle / Eclipse Temurin / Amazon Corretto / Azul Zulu / Red Hat 等 |
| 主流构建工具 | Maven / Gradle |
| Web 框架 | Spring Boot 绝对主导,Quarkus / Micronaut 跟进 |
| 移动 | Android(但越来越多用 Kotlin) |
| 大数据 | Hadoop / Spark / Flink / Kafka 内核 |
LTS vs 非 LTS
Oracle 每 6 个月发新版(17 / 18 / 19 / 20 / 21 / 22 ...),但只 LTS 长期支持:
| 版本 | 发布 | LTS |
|---|---|---|
| Java 8 | 2014 | LTS(仍是企业生产主力,但已老) |
| Java 11 | 2018 | LTS |
| Java 17 | 2021 | LTS(许多在维护的新项目起点) |
| Java 21 | 2023 | LTS(虚拟线程 + records + sealed 完备) |
| Java 25 | 2025-09 | LTS(当前新项目首选) |
新项目选 Java 25 LTS(如团队需要更熟悉的版本,21 LTS 也是稳定选项)——records / sealed / pattern matching / virtual threads 都到位。 维护老项目:先了解卡在哪个版本,按部就班升。
JDK vs JRE
| 是什么 | |
|---|---|
| JDK | 开发包(编译器 javac + 工具 + JRE) |
| JRE | 运行环境(只跑,不能编译)—— Java 11 起 Oracle 不再单发 JRE,统一发 JDK |
本地装 JDK 即可——能编译能跑。
发行版选哪个
JDK 是开源的(OpenJDK),多个厂商分别打包。选哪个?
| 发行版 | 推荐 |
|---|---|
| Eclipse Temurin(Adoptium) | 社区中立、最主流、新项目首选 |
| Amazon Corretto | AWS 部署、免费、企业级 |
| Azul Zulu | 多版本支持、商业支持 |
| Oracle JDK | 谨慎——生产环境用要 license(旧争议) |
| GraalVM | 自带 AOT 原生编译 + 多语言(不在本系列展开) |
默认 Temurin。本机用 SDKMAN 管多版本。
Java 跑在哪
JVM = Java 字节码执行环境。同一个 .class / .jar 文件可以跑在:
- Linux / Windows / macOS(x86 / ARM)
- 服务器、容器、Lambda 函数
- Android(DVM / ART,技术上不是标准 JVM,但接近)
- IoT 设备(Embedded JRE)
Write Once, Run Anywhere——这是 Java 90 年代的口号,今天仍 90% 成立。
Java 的语言哲学
- 强类型 + 显式:所有变量必须声明类型;编译器严格
- OOP 强制:一切(几乎)放在类里
- GC + 自动内存:不需要手动 malloc/free
- 生态稳定:API 向后兼容是金字招牌(升 JDK 老代码大概率还能跑)
它能用来做什么
| 领域 | 代表 |
|---|---|
| Web 后端 | Spring Boot、Quarkus、Micronaut |
| 微服务 | Spring Cloud、Dubbo |
| 大数据 | Hadoop / Spark / Flink / Kafka |
| 搜索 | Elasticsearch / Solr |
| 移动 | Android(虽然 Kotlin 更主流了) |
| 桌面 | JavaFX(小众)、Swing(老) |
| IDE | IntelliJ IDEA 自己也是 Java + Kotlin 写的 |
| 区块链 | Hyperledger Fabric / Corda |
这 20 篇怎么排
| 模块 | 篇数 | 主要内容 |
|---|---|---|
| 入门 + 工具链(02-04) | 3 | 装 JDK / 第一个程序 / Maven / IDE |
| 类型与基础(05-12) | 8 | 类型 / 字符串 / 控制流 / 方法 / 类 / 继承 / 接口 / records |
| 现代特性 + 收尾(13-20) | 8 | 泛型 / 集合 / Streams / Optional / 模式匹配 / Lambda / 异常 / 路线图 |
不教:Spring / Maven 深入 / Android / JDBC / 测试框架 / 部署——后续独立系列。
学习前提
- 会任何一门 OOP 语言(C# / TypeScript / Python OOP 都行)
- 不要求 Linux 经验
现代 Java 教什么、不教什么
教:
var推断- record / sealed / pattern matching
- 文本块
"""...""" - 现代 switch 表达式
- 虚拟线程 (Project Loom)
- Streams + Optional
不教(除非提一句历史):
new ArrayList<Integer>()时还写new ArrayList<Integer>()(用var)- 长篇 checked exception 嵌套
- 老 IO(
FileInputStream链)—— 用Files.readString/Files.lines Hashtable/Vector- JSP / Servlet 手写
- Java 8 之前的"老 Java"
学到的应该是2026 年怎么写——不是 2005 年的 Java。
→ 下一篇 安装 JDK