# Java 9 功能

> 原文： [https://javabeginnerstutorial.com/core-java-tutorial/java-9-features/](https://javabeginnerstutorial.com/core-java-tutorial/java-9-features/)

预期的 Java 9 版本引发了许多创新和令人印象深刻的新功能，Oracle 宣布了 JDK 的新发布议程，而这仅仅是开始。 过去，开发人员经常批评 Java 的发展速度不够快。

Java SE 9 于 2017 年 9 月发布。它包含一长串功能，包括模块化，读求值打印循环，提前编译以及用于字符串存储的节省内存的开发。

它将为 Java 语言的发展增加一个独特的阶段，并使 JDK 团队可以更快地进行修改和创新。 由于 Java 9 是 Java 10 继而的短期加速发布版本，因此 Java 9 已停止获取更新。

此版本的 Java 具有一些基本的架构更改，并且进行了许多改进。

## Java 9 功能包括

1.  JSR 376：Jigsaw 项目（Java 平台模块系统）下的 JDK 模块化
2.  JEP 222：jshell：Java Shell（Java REPL）
3.  JEP 295：AOT 编译
4.  JEP 268：XML 目录
5.  JEP 266：更多并发更新。 它包括反应式流的 Java 实现，包括一个新的`Flow`类，该类将包括反应式流当前提供的接口。
6.  JEP 193：变量句柄：建立标准方法来请求各种`java.util.concurrent.atomic`和`sun.misc.Unsafe`操作的等效项
7.  JEP 282：jlink：Java 链接器：设计一种工具，该工具可以将一组模块及其主导结构构建和优化为自定义运行时映像。 它有效地允许产生完全正确的执行，包括运行它的 JVM。
8.  JavaDB 已从 JDK 中删除
9.  JEP 263：HiDPI 图形：自动缩放和调整大小

Java 9 应该为千兆字节的堆提供更好的帮助，更好的本机代码集成，不同的默认垃圾收集器（G1，“响应时间更短”）和自调整 JVM。

为了启动向模块化 Java 9 的平稳迁移，Java 9 允许对类路径上的代码进行未经授权的沉思访问，JRE 使用它来探索类和资源数据。 Java 9 之后的版本将禁止此功能。

当前的编译器控制功能旨在提供对 JVM 编译器的细粒度和方法上下文相关的控制，使开发人员可以在运行时更改编译器控制选项，而不会降低执行质量。 该工具还简化了 JVM 编译器错误的解决方法。

Java 9 还忽略了`import`语句上的 Java 警告，以进一步编写大型代码库，而不再使用 lint 警告。 这些包含代码库的不推荐使用的功能通常必须保留一段时间，但是如果自愿使用了该不推荐使用的构造，则传达不推荐使用的构造并不能保证发出警告消息。

Java 的有效发布措施意味着开发人员不必等待显着的[版本](https://javabeginnerstutorial.com/core-java-tutorial/java-9-features/)。 Java 工具供应商 ZeroTurnaround 的 Java 倡导总监西蒙·梅普尔（Simon Maple）说，这也可能意味着开发人员将跳过 Java 9 及其“朴素的”模块化功能，而等待六个月才能获得现代版本，这可能会消除任何复杂性。

新的为期 6 个月的发布顺序和适当的支持设计将要求对当前应用进行更快的更新，并在一致的基础上启动新功能。 结合尚存的框架（如 Java EE 或 spring）的发展，这将为 Java 世界增添新的活力。 而且，这也要求每隔几年更新其应用的所有公司都转变思维方式。