JAVA10新特性_JDK 10新特性
一、引言
在Java 9发布之后,Java 10很快就出现了。与之前的版本不同,Java 10没有那么多令人兴奋的功能,但它几乎没有重要的更新会改变您的编码方式,以及其他未来的Java版本。简单的说Java 10 仅仅是Java 9的一些优化和增强。新功能不多,变化也不多。
二、局部变量类型自动识别推断
Java语言现在支持var方式声明变量。var允许声明局部变量的时候不指定类型。变量的类型将从创建的实际对象的类型推断出来。这个改变声称JDK10唯一对开发人员的改变。
$title(Application.java)
var str = "Hello world";
//或者
String str = "Hello world";
上面例子中的两个语句写法是等价的。在第一个语句中,类型str
由类型的赋值String
类型决定。
三、垃圾收集器接口
在早期的JDK结构中,构成垃圾收集器(GC)实现的组件分散在代码库的各个部分中。它在Java 10中发生了变化。现在,它是JVM源代码中的一个干净的接口,可以快速,轻松地集成替代收集器。它将改善不同垃圾收集器的源代码隔离。
这纯粹是重构。以前工作的所有东西都需要在之后工作,而且表现不应该倒退。
四、root 证书
cacerts密钥库是JDK的一部分,旨在包含一组根证书,这些证书可用于在各种安全协议中使用的证书链中建立信任。但是,JDK源代码中的cacerts密钥库目前是空的。
cacerts密钥库将填充由Oracle Java SE根CA程序的CA颁发的一组根证书。许多供应商已经签署了所需的协议,并且每个供应商都会签署一份将包含的根证书列表。那些未签署协议的人目前不会被包括在内。那些需要更长时间处理的内容将包含在下一个版本中。
这也意味着Oracle和Open JDK二进制文件在功能上都是相同的。默认情况下,TLS等关键安全组件将在OpenJDK构建中运行。
五、基于实验Java的JIT编译器
此功能使基于Java的JIT编译器Graal可用作Linux / x64平台上的实验性JIT编译器。Graal将使用JDK 9中引入的JVM编译器接口(JVMCI).Graal已经在JDK中,因此将其作为实验性JIT启用将主要是测试和调试工作。
要将Graal作为JIT编译器启用,请在java命令行上使用以下选项:
-XX:+ UnlockExperimentalVMOptions -XX:+ UseJVMCICompiler
Graal是从头开始用Java完全重写JIT编译器。以前的JIT编译器是用C ++编写的。
六、新增的API和选项
在Java 10中添加了73个新的API。让我们来看看它们中的一些:
API | 描述 |
---|---|
Optional.orElseThrow() |
该类中orElseThrow 添加了一种新方法Optional 。它是现有get 方法的同义词,现在是现有方法的首选替代方案。 |
List.copyOf ,Set.copyOf 和Map.copyOf |
这些方法从现有实例创建新的集合实例。 |
Collectors.toUnmodifiableList ,Collectors.toUnmodifiableSet ,Collectors.toUnmodifiableMap |
这些方法允许将a的元素Stream 收集到不可修改的集合中 |
--jdk.disableLastUsageTracking |
禁用正在运行的VM的JRE上次使用情况跟踪。 |
--add-stylesheet |
支持在生成的文档中使用多个样式表。 |
--main-stylesheet |
帮助区分主样式表和任何其他样式表。 |
@summary 标签 |
添加以明确指定用作API描述摘要的文本。默认情况下,API描述的摘要是从第一句推断出来的。 |
七、删除了API和选项
API | 描述 |
---|---|
LookAndFeels |
|
Runtime.getLocalizedInputStream ,Runtime.getLocalizedOutputStream |
过时的国际化机制的一部分,没有已知的用途。 |
RMI服务器端多路复用协议支持 | 它在JDK 9中被禁用,现在已被删除。 |
常见的DOM API | 这些com.sun.java.browser.plugin2.DOM 和sun.plugin.dom.DOMObject API已被删除。应用程序可以netscape.javascript.JSObject 用来操纵DOM。 |
FlatProfiler | 在JDK 9中已弃用,已通过删除实现代码而过时。 |
-Xoss ,-Xsqnopause ,-Xoptimize ,-Xboundthreads ,和-Xusealtsigs |
选项已删除。 |
policytool |
该用policytool安全工具已经从JDK中删除。 |
不推荐使用的类 com.sun.security.auth.** |
现在删除以下课程。
|