Java概述
Java 是一种面向对象、强类型、跨平台的编程语言。它最初由 Sun Microsystems 发布,后来随 Sun 被 Oracle 收购而进入 Oracle 生态。Java 最大的工程价值不只是语法本身,而是围绕 JVM、标准库、工具链、框架、生态规范和长期兼容性形成的一整套平台能力。
学习 Java 基础时,不要只把它当作“语法课”。真正的 Java 基础包括:
- 代码如何从
.java编译成.class。 - 基本类型和引用类型有什么差异。
- 对象、类、继承、多态如何落到运行时。
- String 为什么不可变。
- 泛型为什么会类型擦除。
- 异常如何传播。
- 反射、注解、枚举这些语言机制如何服务框架。
- Lambda、Stream、Optional、日期时间和现代语法如何提升表达力。
# 1. Java 程序运行链路
Java 程序的基本运行过程如下:
┌──────────────┐
│ Hello.java │ Java 源码
└──────┬───────┘
│ javac 编译
▼
┌──────────────┐
│ Hello.class │ JVM 字节码
└──────┬───────┘
│ 类加载、验证、解释执行、JIT 编译
▼
┌──────────────┐
│ JVM │ 屏蔽操作系统差异
└──────┬───────┘
│ 调用本地系统能力
▼
┌──────────────┐
│ OS / Hardware │
└──────────────┘
这条链路解释了 Java 的跨平台能力:源码不直接编译成本地机器码,而是先编译为平台无关的字节码,再由不同操作系统上的 JVM 执行。
# 2. Java 的核心特点
| 特点 | 含义 | 工程价值 |
|---|---|---|
| 面向对象 | 用类和对象组织状态与行为 | 适合复杂业务建模 |
| 跨平台 | 字节码运行在不同 JVM 上 | 降低部署环境差异 |
| 强类型 | 编译期进行类型检查 | 提前发现大量错误 |
| 自动内存管理 | GC 自动回收不可达对象 | 减少手动释放内存成本 |
| 多线程支持 | 标准库内置线程和并发工具 | 适合服务端并发场景 |
| 生态成熟 | Spring、Maven、JVM 工具丰富 | 企业开发效率高 |
Java 的设计非常重视长期兼容性,这也是很多企业系统愿意长期使用 Java 的重要原因。
# 3. JDK、JRE、JVM 的关系
JDK
├─ 开发工具
│ ├─ javac
│ ├─ jar
│ ├─ javadoc
│ ├─ jcmd / jstack / jmap
│ └─ ...
│
└─ 运行环境
├─ JVM
└─ Java 标准类库
概念区别:
- JVM:执行 Java 字节码的虚拟机。
- JRE:运行 Java 程序所需环境,传统上包含 JVM 和类库。
- JDK:开发 Java 程序所需工具包,包含编译器、诊断工具和运行环境。
现代 JDK 发布形态中,单独安装传统 JRE 的场景已经减少,但理解这三个概念仍然有助于排查环境问题。
# 4. Java 平台组成
Java 不只是语言,还包括多个层次:
| 层次 | 内容 |
|---|---|
| Java 语言 | 语法、类型系统、面向对象、异常、泛型等 |
| Java 标准库 | java.lang、集合、IO、并发、时间、网络等 |
| JVM | 类加载、运行时内存、执行引擎、GC、JIT |
| 工具链 | javac、jar、javadoc、jcmd、Maven、Gradle |
| 生态框架 | Spring、MyBatis、Netty、JUnit 等 |
学习基础语法时,要逐渐把语法和 JVM、标准库、框架联系起来。例如注解本身只是元数据,但 Spring 通过反射和类扫描让注解成为配置模型。
# 5. Java 版本节奏
Java 9 之后采用六个月一个特性版本的发布节奏,并周期性提供 LTS 版本。根据 Oracle Java SE Support Roadmap,Java SE 8、11、17、21、25 是 LTS 版本,Java 26 是 2026 年 3 月发布的非 LTS 版本。
常见版本节点:
| 版本 | 时间 | 代表特性 |
|---|---|---|
| Java 5 | 2004 | 泛型、枚举、注解、增强 for、自动装箱 |
| Java 7 | 2011 | try-with-resources、NIO.2、switch 支持 String |
| Java 8 | 2014 | Lambda、Stream、Optional、java.time |
| Java 9 | 2017 | 模块系统、JShell |
| Java 11 | 2018 | LTS,HTTP Client 标准化 |
| Java 17 | 2021 | LTS,密封类、模式匹配阶段性增强 |
| Java 21 | 2023 | LTS,虚拟线程、记录模式、Sequenced Collections |
| Java 25 | 2025 | LTS,继续推进语言、运行时和 JFR 等能力 |
| Java 26 | 2026 | 非 LTS,继续演进语言、HTTP Client、GC 与 AOT 能力 |
实际企业项目中,Java 8、11、17、21、25 都可能遇到。学习时可以以 Java 8 作为基础分水岭,同时了解 Java 17/21 之后的现代写法。
版本信息可参考 Oracle Java SE Support Roadmap (opens new window)。学习时不要只追最新版本,更要确认项目运行时、构建工具、框架兼容性和团队编码规范。
# 6. Java 基础章节学习地图
Java 基础
├─ Java 概述
├─ Java 语法
│ ├─ 关键字
│ ├─ 数据类型
│ ├─ 运算符
│ └─ 流程控制
├─ 面向对象
│ ├─ 类和对象
│ ├─ 封装、继承、多态
│ ├─ 抽象类与接口
│ └─ 内部类
├─ 基础数据结构
│ ├─ 数组
│ └─ String
├─ 语言机制
│ ├─ 基本类型与包装类
│ ├─ Object 类
│ ├─ 泛型
│ ├─ 枚举与注解
│ ├─ 反射
│ └─ 值传递与引用
├─ 函数式与常用 API
│ ├─ Lambda 与函数式接口
│ ├─ Stream API
│ ├─ Optional
│ └─ 日期时间 API
├─ 现代语法
│ ├─ var
│ ├─ record
│ ├─ sealed class
│ └─ switch 模式演进
└─ 异常处理
# 7. 学习顺序建议
推荐顺序:
- 先掌握语法、数据类型、流程控制。
- 再理解类、对象、封装、继承、多态。
- 接着学习数组、String、包装类这些基础类型。
- 然后学习泛型、注解、反射这些框架基础。
- 再学习 Lambda、Stream、Optional、日期时间等 Java 8 之后的常用能力。
- 最后学习现代语法、异常处理和开发规范。
# 8. 开发中常见误区
误区一:Java 是纯解释执行语言。 Java 字节码可以解释执行,也可以被 JIT 编译为机器码。
误区二:有 GC 就不会内存泄漏。 只要对象仍然被引用,GC 就不会回收它。
误区三:Java 基础只等于语法。 企业开发中的 Java 基础还包括对象模型、异常设计、泛型、注解、反射和常用类库。
误区四:所有新语法都应该马上用。 新语法要结合项目 JDK 版本、团队熟悉度和可维护性使用。
# 9. Tips 快问快答
Q:Java 为什么能跨平台?
A:Java 源码先编译成平台无关的字节码,再由不同平台上的 JVM 执行。
Q:JDK 和 JVM 是一回事吗?
A:不是。JDK 是开发工具包,JVM 是执行字节码的虚拟机。
Q:Java 基础学到什么程度才算扎实?
A:能解释类型、对象、异常、泛型、String、反射等机制背后的原因,而不是只会写语法。
Q:现在学习 Java 还需要学 Java 8 吗?
A:需要。Java 8 的 Lambda、Stream、时间 API 仍是大量企业项目的基础,同时也要了解 Java 17/21/25 等 LTS 版本演进。
# 10. 总结
Java 基础是整个 Java 技术栈的地基。它既包含语法,也包含对象模型、类型系统、运行机制和常用语言特性。后续集合、并发、IO、JVM、Spring 等内容,都会不断回到这些基础概念上。