Java 9 (JDK 9) 核心特性与优势全览
Java 9 发布目标
Java 9 于 2017 年 9 月 21 日发布,核心目标:
- 模块化:引入模块系统,使 JDK 可裁剪适配小型设备。
- 安全增强:强化 JDK 与 Java 实现的整体安全性。
- 构建与维护:简化大型代码库与 Java SE/EE 应用的构建维护。
- 标准模块系统:为平台与 JDK 设计统一的模块体系。
90+ 增强中的关键特性
| 特性 | 说明 |
|---|---|
| 模块系统 (Jigsaw) | 命名的、自描述的代码与数据集合,支持强封装、显式依赖、可靠配置。 |
| JShell (REPL) | 交互式编程环境,支持即时执行表达式、语句、声明,无需编译运行周期。 |
| HTTP/2 Client | 全新 java.net.http.HttpClient,支持 HTTP/2、WebSocket、服务器推送、响应式流。 |
| HTML5 Javadoc | 生成 HTML5 格式文档,内置搜索框,提升可用性。 |
| 多版本 JAR | 单 JAR 包含多个 Java 版本专用类文件(META-INF/versions/N/),运行时自动选择。 |
| 集合工厂方法 | List.of()、Set.of()、Map.of() 创建不可变集合,简洁高效。 |
| 私有接口方法 | 接口支持 private 与 private static 方法,消除默认方法代码重复。 |
| 进程 API 改进 | ProcessHandle 获取 PID、启动时间、CPU 时间、命令行、用户、父/子进程等;onExit() 异步回调。 |
| Stream API 增强 | 新增 takeWhile、dropWhile、iterate(seed, hasNext, next)、ofNullable。 |
| try-with-resources 改进 | 允许使用 effectively-final 变量作为资源,无需在 try 块内重新声明。 |
| @Deprecated 增强 | 新增 forRemoval、since 属性,标记移除意图与废弃版本。 |
| 菱形操作符扩展 | 匿名内部类构造可使用 <> 推断类型参数。 |
| Optional 增强 | 新增 stream()、ifPresentOrElse()、or() 方法。 |
| 多-resolution 图像 API | MultiResolutionImage 封装多规格图像变体,自动选择最佳分辨率。 |
| CompletableFuture 增强 | 支持超时/延迟补全、改进子类化支持、新增工厂方法。 |
| 轻量级 JSON API | javax.json 标准化 JSON 处理,无需第三方库。 |
| 响应式流 API | java.util.concurrent.Flow 实现 Reactive Streams 规范,支持背压。 |
模块系统核心概念
module-info.java:模块声明文件,定义名称、依赖、导出包、开放包、服务提供/使用。requires:声明依赖模块;exports:导出包供外部访问。jlink:链接时工具,按需组装模块生成定制运行时镜像(jre替代品)。jmod:新打包格式,含原生代码、配置文件,供jlink使用。
java
- C 语言全面概述:历史、特性与应用领域
- 精通 Java 运算符:类型、语法与实战示例
- Java 注释:类型、用法与最佳实践
- 精通 Java 增强 for 循环:语法、示例与最佳实践
- 精通 Java 字符串:创建、方法与最佳实践
- Java 编程语言:演进、版本与应用
- Java 10 核心特性与发布模型详解
- Java 9 进程 API 改进:ProcessHandle 与异步控制
- Java 9 Stream API 增强:takeWhile、dropWhile、iterate 与 ofNullable
- Java 9 多Resolution图像API:响应式图形处理
- Java 8 概览:函数式编程、流式 API 与日期时间新特性
- Java 8 全新日期时间 API:线程安全、设计优雅、时区处理轻松搞定