JDK 8 vs JDK 11 新特性
JDK 8 vs JDK 11
| 类别 | JDK 8 | JDK 11(包含 JDK9/10 特性) |
|---|---|---|
| 语言特性 | Lambda、方法引用、函数式接口 | var 局部变量类型推断 |
| 集合 | Stream API | Stream 增强(takeWhile()、dropWhile() 等)、List.of() 等不可变集合 |
| 日期时间 | java.time 新日期 API |
持续增强 |
| Optional | 基础 API | isEmpty()、ifPresentOrElse()、or()、stream() |
| String | 无明显增强 | isBlank()、strip()、lines()、repeat() |
| 文件 | NIO.2 | Files.readString()、writeString() |
| 网络 | HttpURLConnection |
全新 HttpClient(支持 HTTP/2、异步) |
| 运行方式 | 需先编译 | 支持 java Hello.java 直接运行 |
| JVM | G1 可选 | G1 更成熟,支持 ZGC(实验)、容器感知更好 |
| 模块化 | 无 | JPMS(Java Platform Module System) |
JDK 8 亮点
- Lambda 表达式
- Stream API
Optionaljava.timeCompletableFuture- 接口默认方法(
default)
JDK 11 亮点
- 模块化(JPMS)
var- 新版
HttpClient - String、Files API 增强
- 不可变集合工厂方法(
List.of()等) - 单文件源码运行
- 更好的 Docker/Kubernetes 支持
JDK 11 升级注意
- 移除了 JAXB、JAX-WS、CORBA 等 Java EE 模块,需要单独引入依赖。
- 对
sun.*等内部 API 限制更严格,旧代码可能需要调整。
一句话总结
- JDK 8:函数式编程时代(Lambda + Stream)。
- JDK 11:现代 Java 平台(模块化 + 新 API + 容器优化 + 更好的 JVM)。