Java平台标准版Oracle JDK 9中的新增功能

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 官方文档 https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23AFD78-C777-460B-8ACE-58BE5EA681F6pdf下载 https://docs.oracle.com/javase/9/whatsnew/JSNEW.pdf原文翻译:Java平台标准版Oracle JDK 9的新增功能版本9E77563-052017年9月JDK 9新增内容概述Java平台标准版9是一个主要的功能版本。

官方文档 https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23AFD78-C777-460B-8ACE-58BE5EA681F6

pdf下载 https://docs.oracle.com/javase/9/whatsnew/JSNEW.pdf

原文翻译:
Java平台标准版
Oracle JDK 9的新增功能
版本9
E77563-05
2017年9月
JDK 9新增内容概述
Java平台标准版9是一个主要的功能版本。以下总结了Java SE 9和JDK 9(Oracle的Java SE 9的实现)中的功能和增强功能。
JDK增强建议(JEP)是一个建议,旨在设计和实现对JDK的一个不小的变化。请参阅JEP 1:JDK增强 - 建议和路线图过程。Java Specification Request(JSR)描述了Java平台的建议和最终规范。请参阅JSR概述。
JDK 9中的关键变化
这些变化影响到多个技术领域。
特征 描述
Java平台模块系统 介绍一种新的Java编程组件,这个模块是一个有名的,自描述的代码和数据集合。这个模块系统:
• 引入了一个新的可选阶段,即链接时间,该时间在编译时间和运行时间之间,在此期间可以将一组模块组装并优化为自定义运行时映像; 看到jlink在工具Java平台,标准版工具参考。
• 将选项添加到工具javac,jlink以及java可以指定模块路径的位置,这些模块路径定位了模块的定义。
• 介绍模块化的JAR文件,它是一个JAR文件,module-info.class在其根目录中有一个文件。
• 介绍JMOD格式,除了可以包含本地代码和配置文件之外,它是与JAR类似的打包格式; 看到这个jmod工具。
JDK本身已经被分成了一组模块。这个变化:
• 使您能够将JDK的模块组合成各种配置,其中包括:
• 对应于JRE和JDK的配置。
• 在内容上与Java SE 8中定义的每个紧凑配置文件大致相同。
• 只包含一组指定模块及其所需模块的自定义配置。
• 重新构建JDK和JRE运行时映像以适应模块,并提高性能,安全性和可维护性。
• 定义一个新的URI方案,用于命名存储在运行时映像中的模块,类和资源,而不会泄露映像的内部结构或格式。
• 删除认可的标准覆盖机制和扩展机制。
• 从Java运行时映像中移除rt.jar和tools.jar移出。
• 使大多数JDK的内部API在默认情况下不可访问,但留下了一些关键的,广泛使用的内部API,直到所有或大部分功能都支持替代。
运行该命令jdeps -jdkinternals以确定您的代码是否使用内部JDK API。
有关更多信息,请参阅以下内容:
• Java平台模块系统(JSR 376)
• JEP 261:模块系统
• JEP 200:模块化JDK
• JEP 220:模块化运行时间图像
• JEP 260:封装大多数内部API

JEP 223:新的版本字符串计划
提供简化的版本字符串格式,有助于清楚地区分主要,次要,安全和修补程序更新版本。
新的版本字符串格式如下所示:
$ MAJOR。MINOR $,$安全。$ PATCH
• $MAJOR是主版本增加的版本号,例如JDK 9,其中包含Java SE平台规范指定的重要新功能。主要版本包含新功能和对现有功能的更改,这些功能都是提前计划和公布的。
• $MINOR 是针对每个次要更新而增加的版本号,例如错误修复,对标准API的修订或者在相关平台规范范围之外的功能的实现。
• $SECURITY 是针对安全更新版本增加的版本号,其中包含关键修复程序(包括那些提高安全性所必需的修复程序)。
• $PATCH 是包含已经一起测试过的安全性和高优先级客户修复程序的版本增加的版本号。
见新版本字符串格式的Java平台,标准版安装指南。

JDK 9安装程序的新增功能
JDK 9包括Microsoft Windows和macOS平台的安装程序增强功能。
Microsoft Windows的安装程序增强功能
特征 描述
使用安装程序的用户界面启用或禁用Web部署 提供在安装程序的欢迎页面中启用或禁用Web部署的选项。要启用Web部署,请在“ 欢迎”页面中选择“ 自定义安装”,单击“ 安装”,然后选中“ 在浏览器中启用Java内容”复选框。
安装程序增强macOS
特征 描述
CPU版本可用性 卸载当前CPU版本后,提供有关下一个CPU可用性的通知。
用户体验 增强用户体验,同时更新JRE。
JDK 9中的工具的新增功能
这些是JDK 9中的工具增强功能。
特征 描述
JEP 222:jshell:Java Shell(Read-Eval-Print Loop)
将Read-Eval-Print Loop(REPL)功能添加到Java平台。
该jshell工具提供了一个用于评估Java编程语言的声明,语句和表达式的交互式命令行界面。它有助于对编码选项进行原型设计和探索,并立即得到结果和反馈。即时反馈与以表达式开始的能力相结合对教育非常有用,无论是学习Java语言,还是学习新的API或语言功能。
见jshell在Java平台,标准版工具参考,并介绍JShell在Java平台,标准版的Java壳牌用户指南。
JShell API使应用程序能够利用REPL功能。请参阅jdk.jshell包。

JEP 228:添加更多的诊断命令
定义其他诊断命令以提高诊断Hotspot和JDK问题的能力。
见jcmd在Java平台,标准版工具参考。

JEP 231:删除启动时JRE版本选择
删除了在启动时请求不是JRE版本的JRE版本的功能。
现代应用程序通常通过Java Web Start(具有JNLP文件),本地OS打包系统或主动安装程序进行部署。这些技术有自己的方法来管理所需的JRE,根据需要查找或下载和更新所需的JRE。这使得启动时JRE版本选择已经过时。
JEP 238:多版本JAR文件
扩展JAR文件格式,使多个Java特定版本的类文件能够共存于一个归档中。
多版本JAR(MRJAR)包含特定于Java平台版本的类和资源的额外版本化目录。使用该jar工具的--release选项指定版本化的目录。

JEP 240:删除JVM TI hprof代理
hprof从JDK中删除代理。该hprof代理程序被编写为JVM工具接口的演示代码,并不打算成为生产工具。
hprof代理商的有用功能已被更好的替代品取代。
注意:
在hprof代理已被删除的同时,仍然可以hprof使用格式化jmap或其他诊断工具创建堆转储。见诊断工具在Java平台,标准版故障排除指南。

JEP 241:删除jhat工具
jhat从JDK中删除该工具。
该jhat工具是JDK 6中添加的一个实验性和不受支持的工具。卓越的堆显示器和分析仪已经可用多年了。
JEP 245:验证JVM命令行标志参数
验证所有数字JVM命令行标志的参数以避免失败,如果发现它们是无效的,则会显示相应的错误消息。
范围和可选的约束检查已经实现了需要用户指定的数值的参数。
见java和验证Java虚拟机的标志参数在Java平台,标准版工具参考。

JEP 247:为旧的平台版本编译
增强功能,javac以便可以编译Java程序以在选定的早期版本的平台上运行。
使用-source或-target选项时,编译的程序可能会意外地使用给定目标平台上不支持的API。该--release选项将防止意外使用API。
见javac在Java平台,标准版工具参考。

JEP 282:jlink:Java链接器
按照JEP 220中的定义,将一组模块及其依赖关系组装到一个自定义运行时映像中并进行优化。
该jlink工具在装配过程中定义了用于转换和优化的插件机制,并用于生成替代图像格式。它可以创建针对单个程序进行优化的自定义运行时。JEP 261将链接时间定义为编译时间和运行时间之间的可选阶段。链接时间需要一个链接工具来组装和优化一组模块及其传递依赖关系来创建运行时映像或可执行文件。
见jlink在Java平台,标准版工具参考。

JDK 9中的安全新特性
这些是JDK 9中的安全增强功能。
特征 描述
JEP 219:数据报传输层安全(DTLS)
启用Java安全套接字扩展(JSSE)API和SunJSSE安全提供程序以支持DTLS版本1.0和DTLS版本1.2协议。
见数据报传输层安全(DTLS)在Java平台,标准版安全开发人员指南。

JEP 244:TLS应用层协议协商扩展
使传输层安全(TLS)连接中的客户端和服务器能够协商要使用的应用程序协议。通过应用层协议协商(ALPN),客户端将支持的应用协议列表作为TLS ClientHello消息的一部分。服务器选择一个协议,并将所选协议作为TLS ServerHello消息的一部分返回。应用协议协商可以在TLS握手内完成,无需增加网络往返。
见TLS握手和应用层协议协商的Java平台,标准版安全开发人员指南。

JEP 249:TLS的OCSP装订
启用TLS连接中的服务器来检查吊销的X.509证书吊销。服务器在TLS握手过程中通过联系在线证书状态协议(OCSP)应答者来处理相关证书。然后,将吊销信息附加或“钉住”到返回给客户端的证书上,以便客户端可以采取适当的措施。
使客户端能够从TLS服务器请求OCSP装订。客户端检查支持该功能的服务器的装订响应。
见OCSP装订在Java平台,标准版安全开发人员指南。

JEP 246:利用GHASH和RSA的CPU指令
AES/GCM/NoPadding使用GHASH HotSpot内在函数可将性能从34 倍提高到150倍。通过PCLMULQDQIntel x64 CPU上的xmul/xmulhi指令和SPARC 上的指令加速GHASH内部函数。
提高性能高达50% BigInteger squareToLen,并BigInteger mulAdd采用RSA热点内部函数的方法。RSA内在函数适用java.math.BigInteger于Intel x64上的类。
jdk.security.provider.preferred引入一个新的安全属性来配置提供者,为特定算法提供显着的性能提升。
请参阅在Java平台中配置首选提供程序以用于特定算法,Standard Edition安全开发者指南。

JEP 273:基于DRBG的SecureRandom实现
提供API 中NIST SP 800-90Ar1中指定的确定性随机位发生器(DRBG)机制的SecureRandom功能。
DRBG机制使用与SHA-512和AES-256一样强大的现代算法。这些机制中的每一个都可以配置不同的安全强度和功能以满足用户需求。
请参阅在Java Platform Standard Edition安全开发者指南中生成随机数字。

JEP 288:禁用SHA-1证书
通过提供更灵活的机制来禁用基于SHA-1的签名的X.509证书链,从而改进了JDK的安全性配置。
在默认情况下在JDK中包含的根锚定的TLS服务器证书链中禁用SHA-1; 本地或企业证书颁发机构(CA)不受影响。
在jdk.certpath.disabledAlgorithms安全性能与几个新的约束,允许在可禁用的证书类型更大的控制增强。
见JEP 288。

JEP 229:默认情况下创建PKCS12密钥库
将默认密钥库类型从JKS修改为PKCS12。PKCS#12是用于存储加密密钥的可扩展,标准和广泛支持的格式。PKCS12密钥库通过存储私钥,可信公钥证书和密钥来提高机密性。此功能还为与其他系统(如支持PKCS12的Mozilla,Microsoft Internet Explorer和OpenSSL)的互操作性提供了机会。
SunJSSE提供程序提供PKCS12 java.security.KeyStore格式的完整实现,以读取和写入PKCS12文件。
见密钥管理的Java平台,标准版安全开发人员指南。
该keytool密钥和证书管理实用程序可以创建PKCS12密钥库。
请参阅创建密钥库在Java平台,标准版安全开发人员指南和keytool在Java平台,标准版工具参考。

JEP 287:SHA-3散列算法
支持NIST FIPS 202中指定的SHA-3加密散列函数。
java.security.MessageDigestAPI 支持以下附加标准算法:SHA3-224,SHA3-256,SHA3-384和SHA3-512。
以下提供程序支持SHA-3算法增强功能:
• SUN提供商:SHA3-224,SHA3-256,SHA3-384和SHA3-512
• OracleUcrypto提供程序:Solaris 12.0支持的SHA-3摘要
JDK 9中的部署新特性
这些是JDK 9中的部署增强功能。
特征 描述
弃用Java插件
在Oracle的JDK 9版本中弃用Java Plug-in和关联的applet技术。在JDK 9中仍然可用的情况下,这些技术将在未来的版本中考虑从Oracle JDK和JRE中删除。
嵌入到网页中的Applets和JavaFX应用程序需要运行Java Plug-in。考虑将这些类型的应用程序重写为Java Web Start或自包含应用程序。
请参阅将Java小应用程序迁移到Java Web Start,以及在Java Platform Standard Edition部署指南中使用JNLP和自包含的应用程序打包。

增强的Java控制面板 改进Java控制面板中选项的分组和显示。信息更容易定位,搜索字段可用,模态对话框不再使用。请注意,某些选项的位置已从Java控制面板的先前版本中更改。
参见Java控制面板的Java平台,标准版部署指南。

JEP 275:模块化Java应用程序打包
将Jigsaw项目的功能集成到Java Packager中,包括模块感知和自定义运行时创建。
利用该jlink工具创建更小的包。
创建仅使用JDK 9运行时的应用程序。不能用于使用较早版本的JRE打包应用程序。
见JRE的定制和打包的模块化应用在Java平台,标准版部署指南。

JEP 289:弃用Applet API
弃用Applet API,随着Web浏览器供应商取消对Java浏览器插件的支持,Applet API变得不那么有用。虽然在JDK 9中仍然可用,但Applet类将在未来版本中考虑删除。考虑将applet重写为Java Web Start或自包含的应用程序。
请参阅将Java小应用程序迁移到Java Web Start,以及在Java Platform Standard Edition部署指南中使用JNLP和自包含的应用程序打包。

JDK 9中Java语言的新特性
Java SE 9中包含一些非常小的语言更改。
特征 描述
JEP 213:铣削项目硬币
标识一些小的变化:
• 允许@SafeVargs私有实例方法。
• 允许有效的最终变量在try-with-resources语句中用作资源。
• 如果推断类型的参数类型是可指定的,则允许具有匿名类的钻石。
• 从Java SE 8开始,从合法标识符名称集合中删除下划线。
• 添加对专用接口方法的支持。
见Java语言更改为Java SE 9在Java平台,标准版的Java语言的更新。

JDK 9中Javadoc的新功能
Javadoc增强功能包括:简化的Doclet API,Javadoc搜索,支持生成HTML5输出以及支持模块系统中的文档注释。
特征 描述
JEP 221:简化的Doclet API
用一个新的简化API代替旧的Doclet API,该API利用其他标准的现有API。标准doclet已被重写为使用新的Doclet API。
注意:
现有的API和旧的标准doclet是可用的,但尚未更新以支持新的语言功能,如模块。
JEP 224:HTML5 Javadoc
支持生成HTML5输出。要获得完全兼容的HTML5输出,请确保文档注释中提供的任何HTML内容都符合HTML5。
JEP 225:Javadoc搜索
为生成的API文档提供一个搜索框。使用此搜索框查找文档中的程序元素,标记词和短语。
JEP 261:模块系统
在模块声明中支持文档注释。包含新的命令行选项来配置要记录的模块集,并为记录的任何模块生成新的摘要页面。
JDK 9中的JVM的新增功能
这些是JDK 9中的JVM增强功能。
特征 描述
JEP 165:编译器控制
提供了一种通过编译器指令选项来控制JVM编译的方法。控制级别是运行时可管理的和方法特定的。编译器控件取代CompileCommand并向后兼容。
见编译器控制的Java平台,标准版Java虚拟机向导。

JEP 197:分段代码高速缓存
将代码缓存划分为不同的段,每个段包含特定类型的编译代码,以提高性能并实现将来的扩展。
见java在Java平台,标准版工具参考。

JEP 276:语言定义的对象模型的动态链接
在运行时将高级对象操作(如读取属性,编写属性和调用函数)动态链接到相应的目标方法句柄。它将这些操作链接到基于传递的值的实际类型的方法句柄。这些对象操作表示为invokedynamic站点。
虽然java.lang.invoke为invokedynamic调用站点的动态链接提供了一个低级别的API ,但是它并没有提供一种方法来表示对象的高级操作,也没有提供实现它们的方法。
使用包jdk.dynalink,可以实现表达式包含动态类型(无法静态确定的类型)的编程语言,并且将这些动态类型的操作表示为invokedynamic调用站点(因为语言的对象模型或类型系统不与JVM的紧密匹配)。
JDK 9中的JVM调优的新增功能
这些是JDK 9中的JVM调优增强功能。
特征 描述
提高G1的可用性,确定性和性能 增强垃圾优先(G1)垃圾回收器来自动确定几个重要的内存回收设置。以前,这些设置必须手动设置以获得最佳结果。另外,修复了G1垃圾收集器的可用性,确定性和性能方面的问题。
JEP 158:统一的JVM日志记录
为JVM的所有组件引入了一个通用的日志记录系统。
请参阅Java Platform Standard Edition工具参考中的-Xloggc java选项。

JEP 214:删除GC组合在JDK 8中弃用
删除在JDK 8中弃用的垃圾收集器(GC)组合。
这意味着以下GC组合不再存在:
• DefNew + CMS
• ParNew + SerialOld
• 增量CMS
并发标记扫描(CMS)的“前景”模式也被删除。以下命令行标志已被删除:
• -Xincgc
• -XX:+CMSIncrementalMode
• -XX:+UseCMSCompactAtFullCollection
• -XX:+CMSFullGCsBeforeCompaction
• -XX:+UseCMSCollectionPassing
命令行标志-XX:+UseParNewGC不再有效果。ParNew只能用于CMS,CMS需要ParNew。因此,该-XX:+UseParNewGC标志已被弃用,并可能在未来的版本中被删除。
JEP 248:使G1成为默认的垃圾收集器
使Garbage-First(G1)成为32位和64位服务器配置上的默认垃圾收集器(GC)。对于大多数用户来说,使用像G1这样的低暂停收集器可以提供更好的整体体验,而不是面向吞吐量的收集器,例如先前默认的Parallel GC。
见垃圾首先垃圾收集器在Java平台,标准版的HotSpot虚拟机垃圾收集调优指南

JEP 271:统一的GC记录
使用JEP 158中引入的统一JVM日志记录框架重新实现垃圾回收(GC)日志记录。GC日志记录以与当前GC日志记录格式一致的方式重新实现; 然而,新旧版本存在一些差异。
请参阅在Java Platform Standard Edition工具参考中使用JVM统一日志记录框架启用日志记录。

JEP 291:弃用并发标记扫描(CMS)垃圾收集器
弃用并发标记扫描(CMS)垃圾收集器。使用该-XX:+UseConcMarkSweepGC选项在命令行上请求时会发出警告消息。Garbage-First(G1)垃圾收集器旨在替代CMS的大多数用途。
JDK 9中的核心库的新增功能
特征 描述
JEP 102:进程API更新
改进用于控制和管理操作系统进程的API。
所述ProcessHandle类提供的过程的本机过程ID,自变量,命令,开始时间,累积CPU时间,用户,父进程,和后代。班级还可以监视进程的活跃度并摧毁进程。通过ProcessHandle.onExit方法,CompletableFuture类的异步机制可以在进程退出时执行操作。
见进程API的Java平台,标准版Java的核心库开发指南,java.lang.Process中,和java.lang.ProcessHandle。

JEP 193:可变手柄
定义一个标准方法来调用对象字段和数组元素的java.util.concurrent.atomic和sun.misc.Unsafe操作等价物。
定义一组标准的fence操作,它们由VarHandle静态方法组成,这些方法可以对内存顺序进行细化控制。这是sun.misc.Unsafe的一个替代方案,它提供了非标准的围栏操作。
定义标准的可达性范围操作,以确保引用的对象保持强烈可达性。
JEP 254:紧凑的字符串
对字符串采用更具空间效率的内部表示。以前,String类存储字符数组中的字符,每个字符使用两个字节(16位)。String类的新内部表示是一个字节数组加上一个编码标志字段。
这纯粹是一个实现的变化,没有改变现有的公共接口。
请参阅Java Platform,Standard Edition Tools ReferenceCompactStrings中的java命令选项。

JEP 264:平台记录API和服务
定义平台类可以用来记录消息的最小日志记录API,以及这些消息的消费者的服务接口。库或应用程序可以提供此服务的实现,以将平台日志消息路由到其选择的日志记录框架。如果没有提供实现,则使用基于java.util.logging API 的默认实现。

JEP 266:更多的并发更新
在JEP 155: JDK 8中引入的并发更新(包括可互操作的发布 - 订阅框架和对CompletableFuture API的增强)中添加了更多的并发更新。

JEP 268:XML目录
添加支持结构化信息标准促进组织(OASIS)XML目录版本1.1标准的标准XML目录API。API定义了可用作接受解析器的JAXP处理器的内部或外部解析器的目录和目录解析器抽象。
使用内部目录API的现有库或应用程序将需要迁移到新API以利用新功能。
见XML目录API的Java平台,标准版Java的核心库开发人员指南。

JEP 269:集合的便利工厂方法
使用少量元素创建集合和映射的实例更容易。在新的静态工厂方法List,Set以及Map界面更简单地创建这些集合的不可变实例。
例如:
设置<String> alphabet = Set.of(“a”,“b”,“c”);
请参阅在Java平台中创建不可变列表,集合和映射,标准版Java核心库开发人员指南。有关API文档,请参阅不可变集静态工厂方法,不可变映射静态工厂方法和不可变列表静态工厂方法。

JEP 274:增强方法手柄
增强了java.lang.invoke包的MethodHandle,MethodHandles和MethodHandles.Lookup类,以简化常见用例并实现更好的编译器优化。
补充包括:
• 在java.lang.invoke包的MethodHandles类中,为循环和try / finally块提供新的MethodHandle组合器。
• 使用新的MethodHandle组合器增强参数处理的MethodHandle和MethodHandles类。
• 为MethodHandles.Lookup类中的接口方法和可选的超级构造函数实现新的查找。
JEP 277:增强弃用
翻新@Deprecated注释以提供有关规范中API的状态和预期处置的更好信息。添加了两个新元素:
• @Deprecated(forRemoval = true)表示将在未来版本的Java SE平台中删除该API。
• @Deprecated(since =“version”)包含Java SE版本字符串,该字符串指示API元素何时被弃用,以及Java SE 9及更高版本中不赞成使用的元素。
例如:@Deprecated(since =“9”,forRemoval = true)
@核心平台中已弃用的注释已更新。
您可以使用新工具jdeprscan来扫描类库(JAR文件)以使用不推荐使用的JDK API元素。
见增强弃用的Java平台,标准版Java的核心库开发人员指南。
见jdperscan在Java平台,标准版工具参考。

JEP 285:旋转等待提示
定义一个API,使Java代码能够提示正在执行一个旋转循环。旋转循环重复检查以查看条件是否为真,例如何时可以获取锁,之后可以安全地执行一些计算,然后释放锁。这个API纯粹是一个提示,并没有语义行为的要求。请参阅Thread.onSpinWait方法。

JEP 290:过滤进入的序列化数据
允许对传入的对象序列化数据流进行过滤,以提高安全性和健壮性。对象序列化客户端可以更容易地验证其输入,并且导出的远程方法调用(RMI)对象也可以更容易地验证调用参数。
序列化客户端实现在ObjectInputStream上设置的过滤器接口。对于RMI,该对象通过RemoteServerRef导出,RemoteServerRef在MarshalInputStream上设置筛选器,以在调用参数解组时对其进行验证。
JEP 259:堆栈行走API
提供了一个堆栈式的API,可以轻松过滤,并可以对堆栈跟踪中的信息进行延迟访问。
该API支持在符合给定条件的框架中停留的短暂散步,以及遍历整个堆栈的漫长散步。如果调用者只对栈顶帧感兴趣,则在符合给定标准的框架中停止检查所有框架的成本。在配置堆栈助手时,API可以访问Class对象。请参见类java.lang.Stackwalker。

JEP 255:将选定的Xerces 2.11.0更新合并到JAXP中
更新JDK以支持Xerces解析器的2.11.0版本。公共JAXP API没有改变。
这些更改包括Xerces 2.11.0的以下类别:数据类型,DOM L3序列化器,XPointer,目录解析器和XML模式验证(包括错误修复,但不包括XML Schema 1.1开发代码)。
JDK 9中的Nashorn的新功能
这些是JDK 9中的Nashorn增强功能。
特征 描述
JEP 236:Nashorn的解析器API
使应用程序(特别是IDE和服务器端框架)能够解析和分析ECMAScript代码。
使用Parser类中的方法从字符串,URL或文件中解析ECMAScript代码。这些方法返回一个CompilationUnitTree实例,它将ECMAScript代码表示为一个抽象语法树。
包jdk.nashorn.api.tree包含Nashorn解析器API。

JEP 292:实现Nashorn中选定的ECMAScript 6功能
实现了第六版ECMA-262(简称ECMAScript 6)或ES6中引入的许多新功能。实现的功能包括以下内容:
• 模板字符串
• let,const和块范围
• 迭代器和for..of循环
• Map,Set,WeakMap和WeakSet
• 符号
• 二进制和八进制文字
JDK 9中的客户端技术的新增功能
这些是JDK 9中的客户端技术增强。
特征 描述
JEP 251:多分辨率图像
使具有不同分辨率的一组图像被封装成单个多分辨率图像。这可能对于应用程序适用于分辨率在运行时间内从大约96dpi到300dpi不等的显示设备有用。
接口java.awt.image.MultiResolutionImage将具有不同分辨率的一组图像封装成单个多分辨率图像,使应用程序能够轻松地使用分辨率变体来操作和显示图像。

JEP 253:为模块化准备JavaFX UI控件和CSS API
为JavaFX UI控件和CSS功能提供公共API,以前只能通过内部软件包提供,但由于模块化而无法访问。
新包javafx.scene.control.skin由一组类组成,这些类为每个UI控件的外观(或外观)提供默认实现。
新的类CssParser是一个CSS解析器,它返回一个Stylesheet对象,它使您可以更好地控制应用程序的CSS样式。它是CSS API(javafx.css包)的一部分。CSS API包含新的支持类,包括解析器使用的一组标准转换器; 看javafx.css.converter包装。

JEP 256:BeanInfo注释
@beaninfo用注释类型JavaBean,BeanProperty和SwingContainer替换Javadoc标记。
这些注释类型在运行时的BeanInfo生成期间设置相应的要素属性。因此,您可以更直接地在Bean类中指定这些属性,而不是为每个Bean类创建单独的BeanInfo类。它还可以删除自动生成的类,这使得更容易模块化客户端库。
JEP 262:TIFF图像I / O
将Tag图像文件格式(TIFF)作为标准添加到javax.imageio包中。新包javax.imageio.plugins.tiff提供了简化TIFF元数据可选操作的类。

JEP 263:Windows和Linux上的HiDPI图形
在Windows和Linux上自动缩放和调整AWT和Swing组件的高点数(HiDPI)显示。
JDK已经支持OS X上的HiDPI“视网膜显示器”。
在此版本之前,在Windows和Linux上,Java应用程序的大小和渲染都基于像素,即使在HiDPI显示器上,像素密度可能是传统显示器的两到三倍。这导致GUI组件和窗口太小,无法读取或使用。
JEP 272:平台特定的桌面功能
将其他方法添加到java.awt.Desktop类中,以便与桌面交互,其中包括:
• 显示自定义关于和首选项窗口。
• 处理请求以打开或打印文件列表。
• 处理请求以打开一个URL。
• 打开本机帮助查看器应用程序。
• 设置默认的菜单栏。
• 启用或禁用应用程序突然终止。
这些新方法取代了包含在OS X包com.apple.eawt中的内部API的功能,这些API 在JDK 9中是默认无法访问的。请注意,包com.apple.eio不再可访问。
JEP 283:在Linux上启用GTK 3
启用基于JavaFX,Swing或Abstract Window Toolkit(AWT)的Java图形应用程序,以在Linux或Solaris上使用GTK +版本2或版本3。
缺省情况下,Linux或Solaris上的JDK使用GTK + 2(如果可用); 如果不是,则使用GTK + 3。
要使用特定版本的GTK +,请设置系统属性jdk.gtk.version。这个系统属性的值可能是2,2.2或3.在你的应用程序加载GTK +之前,你必须设置这个属性,而且它不能和另一个工具包之前加载的GTK +版本冲突。
JDK 9中的国际化新特性
这些是JDK 9中的国际化增强。
特征 描述
JEP 267:Unicode 8.0
支持Unicode 8.0。JDK 8支持Unicode 6.2。
Unicode的6.3,7.0和8.0标准相结合引入10555个字符,29个脚本,和42块,所有这些在JDK 9支撑。

JEP 252:默认情况下启用CLDR区域设置数据
首先将JDK 8中添加的通用语言环境数据存储库(CLDR)基于XML的语言环境数据用作JDK 9中的默认语言环境数据。在以前的版本中,默认为JRE。
要启用与JDK 8兼容的行为,请将系统属性设置为提前的java.locale.providers值。COMPATCLDR
见CLDR语言环境数据通过默认启用的Java平台,标准版国际指南。

JEP 226:UTF-8属性文件
以UTF-8编码加载属性文件。在以前的版本中,加载属性资源包时使用ISO-8859-1编码。UTF-8是一种非常方便的方式来表示非拉丁字符。
大多数现有的属性文件不应受到影响。
见UTF-8属性文件中的Java平台,标准版国际指南。

文档可访问性
有关Oracle对可访问性承诺的信息,请访问Oracle可访问性计划网站http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc
访问Oracle支持
已购买支持的Oracle客户可以通过My Oracle Support获得电子支持。有关详细信息,请访问http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info或访问http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs如果您听力受损。


Java平台标准版 中的新增功能的Oracle JDK 9,第9版
E77563-05
版权所有©2017,Oracle和/或其分支机构。版权所有。
本文档总结了Java SE 9和JDK 9(Oracle的Java SE 9实现)中的特性和增强功能。
本软件和相关文档根据许可协议提供,包含使用和披露限制,并受知识产权法保护。除许可协议明确许可或法律允许外,您不得以任何形式使用,复制,翻印,翻译,广播,修改,许可,传播,分发,展示,执行,发布或展示任何部分,或以任何方式。禁止对该软件进行逆向工程,反汇编或反编译,除非法律要求互操作性。
此处包含的信息如有更改,恕不另行通知,不保证没有错误。如果您发现任何错误,请以书面形式向我们报告。
如果这是交付给美国政府的软件或相关文件,或代表美国政府进行许可的任何人,则以下通知适用:
美国政府最终用户:根据适用的“联邦采购条例”和代理商协议,Oracle计划(包括任何操作系统,集成软件,安装在硬件上的任何程序和/或文档)是“商业计算机软件”具体补充规定。因此,包括任何操作系统,集成软件,安装在硬件上的任何程序和/或文档在内的程序的使用,复制,披露,修改和改编应遵守适用于程序的许可条款和许可限制。美国政府没有其他的权利。
这个软件或者硬件被开发用于各种信息管理应用中的通用。它不被开发或打算用于任何固有危险的应用,包括可能造成人身伤害的应用。如果您在危险应用中使用此软件或硬件,则应负责采取所有适当的故障安全,备份,冗余和其他措施,以确保其安全使用。甲骨文公司及其附属机构对于在危险应用中使用本软件或硬件所造成的任何损害不承担任何责任。
Oracle和Java是Oracle和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。
Intel和Intel Xeon是Intel Corporation的商标或注册商标。所有SPARC商标均经过许可使用,是SPARC International,Inc.的商标或注册商标。AMD,Opteron,AMD徽标和AMD Opteron徽标是Advanced Micro Devices的商标或注册商标。UNIX是The Open Group的注册商标。
本软件或硬件和文档可以提供有关来自第三方的内容,产品和服务的访问或信息。甲骨文公司及其附属公司对于第三方内容,产品和服务不承担任何形式的责任,并明确表示不承担任何责任,除非您与甲骨文达成的适用协议另有规定。对于因访问或使用第三方内容,产品或服务而导致的任何损失,成本或损害,甲骨文公司及其关联公司概不负责,但您与甲骨文之间的适用协议中规定的除外。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
28天前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
|
3月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
73 2
|
1月前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
105 53
|
14天前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
36 1
|
23天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
50 1
|
29天前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
2月前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
55 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
2月前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
30 0
[Java]静态代理与动态代理(基于JDK1.8)
|
2月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
28 1
|
2月前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
32 1

推荐镜像

更多