Java 语言特性系列
Java5 的新特性
Java6 的新特性
Java7 的新特性
Java8 的新特性
Java10 的新特性
序
本文主要讲述一下 Java9 的新特性
特性列表
完整的特性详见 JDK 9 features, 这里列几个相对重要的:
模块系统 JPMS(重磅)
相关的规范及 JEP:
- Java Platform Module System (JSR 376)
- JEP 261: Module System
- JEP 200: The Modular JDK
- JEP 201: Modular Source Code
- JEP 282: jlink: The Java Linker
- JEP 220: Modular Run-Time Images
- JEP 260: Encapsulate Most Internal APIs
相关解读
java9 系列 (三) 模块系统精要
java9 opens 与 exports 的区别
java9 迁移注意事项
java9 module 相关选项解析
G1 成为默认垃圾回收器
相关 JEP:
- JEP 248: Make G1 the Default Garbage Collector
- JEP 291: Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector
- JEP 278: Additional Tests for Humongous Objects in G1
相关解读
java9 系列 (一) 安装及 jshell 使用
Unified JVM/GC Logging
相关 JEP:
- JEP 158: Unified JVM Logging
- JEP 264: Platform Logging API and Service
- JEP 271: Unified GC Logging
相关解读
java9 gc log 参数迁移
HTTP/2 Client(Incubator)
支持 HTTP2, 同时改进 httpclient 的 api, 支持异步模式
相关 JEP
JEP 110: HTTP/2 Client (Incubator)
相关解读
java9 系列(六)HTTP/2 Client (Incubator)
jshell: The Java Shell (Read-Eval-Print Loop)
相关 JEP
JEP 222: jshell: The Java Shell (Read-Eval-Print Loop)
相关解读
java9 系列 (一) 安装及 jshell 使用
Convenience Factory Methods for Collections
相关 JEP
JEP 269: Convenience Factory Methods for Collections
以前大多使用 Guava 类库集合类的工厂, 比如
- Lists.newArrayList(1,2,3,4,5);
- Sets.newHashSet(1,2,3,4,5);
- Maps.newHashMap();
注意, 上面这种返回的集合是 mutable 的
现在 java9 可以直接利用 jdk 内置的集合工厂, 比如
- List.of(1,2,3,4,5);
- Set.of(1,2,3,4,5);
- Map.of("key1","value1","key2","value2","key3","value3");
注意, jdk9 上面这种集合工厂返回的是 immutable 的
Process API Updates
相关 JEP
JEP 102: Process API Updates
相关解读
java9 系列(四)Process API 更新
Stack-Walking API
相关 JEP
JEP 259: Stack-Walking API
相关解读
java9 系列(五)Stack-Walking API
Variable Handles
相关 JEP
JEP 193: Variable Handles
相关解读
java9 系列(七)Variable Handles
docker 方面支持
- Java SE support for Docker CPU and memory limits
- Docker CPU limits
- Experimental support for Docker memory limits
- Docker memory limits
其他
JEP 238: Multi-Release JAR Files
java9 系列(八)Multi-Release JAR Files
- JEP 266: More Concurrency Updates
- JEP 274: Enhanced Method Handles
- JEP 295: Ahead-of-Time Compilation
小结
java9 大刀阔斧, 重磅引入了模块化系统, 自身 jdk 的类库也首当其冲模块化新引入的 jlink 可以精简化 jdk 的大小, 外加 Alpine Linux 的 docker 镜像, 可以大大减少 java 应用的 docker 镜像大小, 同时也支持了 Docker 的 cpu 和 memory 限制(
Java SE 8u131 及以上版本开始支持
), 非常值得使用
- doc
- JDK 9 features
Java 9 新特性概述
java9 系列 (一) 安装及 jshell 使用
java9 系列(二)docker 运行 java9
java9 系列 (三) 模块系统精要
java9 系列(四)Process API 更新
java9 系列(五)Stack-Walking API
java9 系列(六)HTTP/2 Client (Incubator)
java9 系列(七)Variable Handles
java9 系列(八)Multi-Release JAR Files
java9 系列(九)Make G1 the Default Garbage Collector
java9 opens 与 exports 的区别
java9 迁移注意事项
java9 gc log 参数迁移
java9 module 相关选项解析
使用 maven 构建 java9 service 实例
使用示例带你提前了解 Java 9 中的新特性
来源: https://segmentfault.com/a/1190000013620826