# 独特的 Java 10 功能

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

Java 10 是有 23 年历史的最快 Java 版本。 Java 因其缓慢的增长和发展而受到批评，但是 Java 10 恰恰相反。 这是一个具有许多发展的发行版，其范围和影响可能不明显，但牵强附会。 在本文的此处，我们将寻找一些关键的 Java 10 功能

新的 Java 10 功能将为 Java 添加一些语法上的甜蜜，对其进行分析并改善开发人员的体验。 在保持对非活动类型安全性的承诺的同时，它将减少与编写 Java 相关的单词的过多使用。

Java 10 由各种新功能和对许多功能领域的改进组成。 它的一些重要增强功能包括垃圾收集和编译以及局部变量类型的改进。

## Java 10 功能

1.  JEP 286：[局部变量](https://javabeginnerstutorial.com/core-java-tutorial/local-variable-in-java/)类型推断
2.  JEP 322：基于时间的发行版本控制
3.  JEP 304：垃圾收集器接口
4.  JEP 307：适用于 G1 的并行全 GC
5.  JEP 316：备用存储设备上的堆分配
6.  JEP 296：将 JDK 林整合到单个仓库中
7.  JEP 319：根证书
8.  JEP 317：基于 Java 的实验性 JIT 编译器
9.  JEP 312：线程本地握手
10.  JEP 313：删除本机头生成工具

### Java 10 功能的独特性

1.  为了在不进行全局 VM 安全点的情况下在[线程](https://javabeginnerstutorial.com/core-java-tutorial/java-thread-tutorial/)上实现回调，具有线程本地握手的功能。
2.  应用类数据共享：用于通过跨方法共享公开类元数据来减少占用空间。 另外，启动时间也会调整。
3.  他们正在促进基于 Grall Java 的即时编译器，该编译器将以创新的形式在 Linux/x64 平台上使用。
4.  G1 垃圾专家需要并行执行完全垃圾累积，以通过执行并行来产生平均案例延迟。
5.  为了提高不同垃圾收集器的源代码隐私，提供了一个干净的垃圾收集器接口。 该提议致力于为 HotSpot 虚拟机中的内部垃圾收集代码提供更好的模块化，从而使其可以将新的垃圾收集器附加到 HotSpot。
6.  改进了创建无法修改的集合的新 API。 `Set.copyOf`，`List.copyOf`和`Map.copyOf`方法将从现有实例创建新的集合实例。 将诸如`UnmodifiableMap`，`UnmodifiableList`和`UnmodifiableSet`之类的新方法添加到`Stream`包的`Collectors`类中，这将允许将流的组件组装为不可修改的数组。
7.  jShell REPL 工具的启动时间将更快，主要是在使用包含多个片段的启动文件时。
8.  将提供三个新的 JVM 选项，以使 Docker 容器用户对系统内存有更大的控制权。
9.  局部变量类型推断：将增强语言以将类型推断扩展到局部变量。 目的是减少与编码关联的“仪式”，同时保留对非活动类型安全性的承诺。
10.  Graal 是一种创新的即时编译器，可以应用于 Linux/x64 平台。
11.  在 HotSpot 的帮助下，它将允许在用户指定的替代存储设备（例如 NVDIMM 内存模块）上指定对象堆。 由于此特性，可以预见，未来的系统可能会具有复杂的内存体系结构。

#### Oracle 的 Java 团队声明不可能：

*   方法参数
*   [构造器参数](https://javabeginnerstutorial.com/core-java-tutorial/constructors-in-java/)
*   方法返回类型
*   字段
*   捕获形式（或任何其他种类的变量声明）。

到目前为止，新的 Java 版本的演变都是由功能驱动的。 这意味着您必须等待几年才能发布下一个版本。 诸如泛型，Lambdas，流和 Jigsaw 之类的重要开发使这一事实可以接受，但是许多较小的有益语言的改进始终以这种方式被延迟。

由于 Java 负责支持 Java 的早期版本，因此我们可以假定它不会破坏向后协调。

## 参考文献

[Java 10 发行说明](https://www.oracle.com/technetwork/java/javase/10-relnote-issues-4108729.html)

