Java 8
约 2 分钟阅读
- Released: 2014-03-18
- LTS
- JDK 8 Project
核心总结
- Lambda 与 Stream 时代开始。JEP 机制在 JDK 8 已覆盖大量平台工作,但 Java 8 的核心是 JSR 335 Lambda、JSR 310 Date Time、Nashorn、PermGen 移除和集合并行处理。
升级关注
- 关注 Lambda/Stream 对调试栈和性能模型的影响。
- PermGen 移除后,旧的 PermGen 参数需要迁移到 Metaspace 参数。
示例
Lambda / Stream / Optional
import java.util.*;
import java.util.stream.*;
List<String> names = Arrays.asList("alice", "bob", "amy");
List<String> result = names.stream()
.filter(v -> v.startsWith("a"))
.map(String::toUpperCase)
.collect(Collectors.toList());
Optional<String> first = result.stream().findFirst();java.time
import java.time.*;
LocalDate today = LocalDate.now();
ZonedDateTime nextRun = today.plusDays(1).atStartOfDay(ZoneId.systemDefault());CompletableFuture
import java.util.concurrent.*;
CompletableFuture.supplyAsync(() -> "hello")
.thenApply(String::toUpperCase)
.thenAccept(System.out::println);JEPs
| JEP | 状态 | 分类 | 标题 | 中文描述 |
|---|---|---|---|---|
| JEP 101 | 正式 | 库/API | Generalized Target-Type Inference | 增强泛型目标类型推断,让方法调用和菱形语法更自然。 |
| JEP 104 | 正式 | 库/API | Annotations on Java Types | 支持类型使用位置注解,是 Checker Framework 等静态分析的基础。 |
| JEP 107 | 正式 | 库/API | Bulk Data Operations for Collections | 集合批量数据操作,支撑 Stream 风格处理。 |
| JEP 109 | 正式 | 语言 | Enhance Core Libraries with Lambda | 核心库适配 Lambda,例如集合、Map、并发工具等 API 增强。 |
| JEP 118 | 正式 | 库/API | Access to Parameter Names at Runtime | 可在运行时读取方法参数名,需编译时保留参数元数据。 |
| JEP 120 | 正式 | 库/API | Repeating Annotations | 允许同一种注解在同一位置重复出现。 |
| JEP 122 | 移除/禁用 | 库/API | Remove the Permanent Generation | 移除 PermGen,改用 Metaspace。 |
| JEP 126 | 正式 | 语言 | Lambda Expressions & Virtual Extension Methods | Lambda 表达式和接口默认方法,是 Java 8 最核心语言变化。 |
| JEP 135 | 正式 | 库/API | Base64 Encoding & Decoding | 标准库内置 Base64 编解码。 |
| JEP 150 | 正式 | 库/API | Date & Time API | 引入 java.time,替代 Date、Calendar 的主要使用场景。 |
| JEP 155 | 正式 | 库/API | Concurrency Updates | CompletableFuture、StampedLock、并发集合等增强。 |
| JEP 174 | 正式 | 工具/平台 | Nashorn JavaScript Engine | 引入 Nashorn JS 引擎,后续 Java 15 移除。 |
| JEP 180 | 正式 | 库/API | Handle Frequent HashMap Collisions with Balanced Trees | HashMap 碰撞严重时桶内转红黑树,降低退化风险。 |
References
关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- Java 版本笔记 · Java 8
自 Java 9 · 每 6 个月一个版本 · 每 2 年一个 LTS - 每 4 个版本 · Java 11 - Java 17 隔了 3 年, 之后为每隔两年 · Java JEP 与版本变化 · 参考 · Java version history
- Java JEP 与版本变化笔记 · 8
资料来源以 OpenJDK JDK Project 页面和 JEP 页面为主。Java 5–7 主要按 JSR/项目整理;JDK 8 起按代表性 JEP 整理;JDK 10 起列出该版本项目页 Features 中的全部 JEP。 · | 状态 | 含义 | 使用建议 |
参考资料
其他外链14 条
- openjdk.org/projects/jdk8/featuresopenjdk.org/projects/jdk8/features
- openjdk.org/jeps/101openjdk.org/jeps/101
- openjdk.org/jeps/104openjdk.org/jeps/104
- openjdk.org/jeps/107openjdk.org/jeps/107
- openjdk.org/jeps/109openjdk.org/jeps/109
- openjdk.org/jeps/118openjdk.org/jeps/118
- openjdk.org/jeps/120openjdk.org/jeps/120
- openjdk.org/jeps/122openjdk.org/jeps/122
- openjdk.org/jeps/126openjdk.org/jeps/126
- openjdk.org/jeps/135openjdk.org/jeps/135
- openjdk.org/jeps/150openjdk.org/jeps/150
- openjdk.org/jeps/155openjdk.org/jeps/155
- openjdk.org/jeps/174openjdk.org/jeps/174
- openjdk.org/jeps/180openjdk.org/jeps/180