一句话

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