logo-cover-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.copyOfSet.copyOfMap.copyOf 这些方法从现有实例创建新的集合实例。
Collectors.toUnmodifiableListCollectors.toUnmodifiableSetCollectors.toUnmodifiableMap 这些方法允许将a的元素Stream收集到不可修改的集合中
--jdk.disableLastUsageTracking 禁用正在运行的VM的JRE上次使用情况跟踪。
--add-stylesheet 支持在生成的文档中使用多个样式表。
--main-stylesheet 帮助区分主样式表和任何其他样式表。
@summary 标签 添加以明确指定用作API描述摘要的文本。默认情况下,API描述的摘要是从第一句推断出来的。

七、删除了API和选项

API 描述
LookAndFeels  
Runtime.getLocalizedInputStreamRuntime.getLocalizedOutputStream 过时的国际化机制的一部分,没有已知的用途。
RMI服务器端多路复用协议支持 它在JDK 9中被禁用,现在已被删除。
常见的DOM API 这些com.sun.java.browser.plugin2.DOMsun.plugin.dom.DOMObjectAPI已被删除。应用程序可以netscape.javascript.JSObject用来操纵DOM。
FlatProfiler 在JDK 9中已弃用,已通过删除实现代码而过时。
-Xoss-Xsqnopause-Xoptimize-Xboundthreads,和-Xusealtsigs 选项已删除。
policytool 用policytool安全工具已经从JDK中删除。
不推荐使用的类 com.sun.security.auth.** 现在删除以下课程。
  • com.sun.security.auth.PolicyFile
  • com.sun.security.auth.SolarisNumericGroupPrincipal
  • com.sun.security.auth.SolarisNumericUserPrincipal
  • com.sun.security.auth.SolarisPrincipal
  • com.sun.security.auth.X500Principal
  • com.sun.security.auth.module.SolarisLoginModule
  • com.sun.security.auth.module.SolarisSystem

 
暂无评论