Java 9
约 2 分钟阅读
- Released: 2017-09-21
- JDK 9 Project
核心总结
- 模块化 JDK 的大版本。核心是 JPMS、jlink、jshell、集合工厂、Flow、G1 默认、内部 API 封装和多版本 JAR。
升级关注
- 模块系统会暴露 split package、非法反射访问和内部 API 依赖问题。
- 使用 jlink 可显著缩小运行时镜像,但需要先梳理模块依赖。
示例
module-info.java
module com.example.app {
requires java.net.http;
exports com.example.app;
}集合工厂、多版本编译、jlink
var names = java.util.List.of("a", "b", "c");
var map = java.util.Map.of("k", "v");javac --release 8 Hello.java
jlink --add-modules com.example.app --output runtime-image
jshellJEPs
| JEP | 状态 | 分类 | 标题 | 中文描述 |
|---|---|---|---|---|
| JEP 102 | 正式 | 库/API | Process API Updates | 增强 Process API,可获取 PID、父子进程和进程信息。 |
| JEP 110 | 正式 | 库/API | HTTP 2 Client | 孵化 HTTP/2 与 WebSocket 客户端,后续 Java 11 标准化。 |
| JEP 158 | 正式 | 库/API | Unified JVM Logging | 统一 JVM 日志,使用 -Xlog。 |
| JEP 193 | 正式 | 库/API | Variable Handles | VarHandle 提供比 Unsafe 更规范的变量和内存访问原语。 |
| JEP 200 | 正式 | 库/API | The Modular JDK | JDK 自身模块化。 |
| JEP 220 | 正式 | 库/API | Modular Run-Time Images | 新的模块化运行时镜像布局,取消传统 rt.jar。 |
| JEP 222 | 正式 | 库/API | jshell: The Java Shell | Java REPL 工具。 |
| JEP 223 | 正式 | 库/API | New Version-String Scheme | 新的版本字符串方案。 |
| JEP 238 | 正式 | 库/API | Multi-Release JAR Files | 一个 JAR 内可放多个 Java 版本实现。 |
| JEP 247 | 正式 | 库/API | Compile for Older Platform Versions | javac --release,用目标平台 API 编译,替代 source/target/bootclasspath 组合。 |
| JEP 248 | 正式 | GC/Runtime | Make G1 the Default Garbage Collector | G1 成为默认 GC。 |
| JEP 254 | 正式 | 库/API | Compact Strings | String 内部用 byte 数组加编码标记,降低 Latin-1 文本内存占用。 |
| JEP 260 | 正式 | 库/API | Encapsulate Most Internal APIs | 封装大部分 JDK 内部 API。 |
| JEP 261 | 正式 | 库/API | Module System | JPMS 模块系统。 |
| JEP 266 | 正式 | 库/API | More Concurrency Updates | Flow Reactive Streams 接口、CompletableFuture 等增强。 |
| JEP 269 | 正式 | 库/API | Convenience Factory Methods for Collections | List.of、Set.of、Map.of 等不可变集合工厂。 |
| JEP 282 | 正式 | 工具/平台 | jlink: The Java Linker | 按模块裁剪生成定制运行时镜像。 |
| JEP 290 | 正式 | 库/API | Filter Incoming Serialization Data | 反序列化过滤器,降低反序列化攻击面。 |
References
关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- Java 版本笔记 · Java 9
自 Java 9 · 每 6 个月一个版本 · 每 2 年一个 LTS - 每 4 个版本 · Java 11 - Java 17 隔了 3 年, 之后为每隔两年 · Java JEP 与版本变化 · 参考 · Java version history
- Java JEP 与版本变化笔记 · 9
资料来源以 OpenJDK JDK Project 页面和 JEP 页面为主。Java 5–7 主要按 JSR/项目整理;JDK 8 起按代表性 JEP 整理;JDK 10 起列出该版本项目页 Features 中的全部 JEP。 · | 状态 | 含义 | 使用建议 |
参考资料
其他外链19 条
- openjdk.org/projects/jdk9openjdk.org/projects/jdk9
- openjdk.org/jeps/102openjdk.org/jeps/102
- openjdk.org/jeps/110openjdk.org/jeps/110
- openjdk.org/jeps/158openjdk.org/jeps/158
- openjdk.org/jeps/193openjdk.org/jeps/193
- openjdk.org/jeps/200openjdk.org/jeps/200
- openjdk.org/jeps/220openjdk.org/jeps/220
- openjdk.org/jeps/222openjdk.org/jeps/222
- openjdk.org/jeps/223openjdk.org/jeps/223
- openjdk.org/jeps/238openjdk.org/jeps/238
- openjdk.org/jeps/247openjdk.org/jeps/247
- openjdk.org/jeps/248openjdk.org/jeps/248
- openjdk.org/jeps/254openjdk.org/jeps/254
- openjdk.org/jeps/260openjdk.org/jeps/260
- openjdk.org/jeps/261openjdk.org/jeps/261
- openjdk.org/jeps/266openjdk.org/jeps/266
- openjdk.org/jeps/269openjdk.org/jeps/269
- openjdk.org/jeps/282openjdk.org/jeps/282
- openjdk.org/jeps/290openjdk.org/jeps/290