Java平台,标准版 Oracle JDK 9中的新功能(上)


本文导读
->JDK 9 中的新功能概述
->JDK 9中的重要变化
->JDK 9安装程序的新功能
->JDK 9中的工具的新功能
->JDK 9中的安全性新增功能


JDK 9 中的新功能概述
Java Platform,Standard Edition 9是一个主要的功能版本。以下总结了Java SE 9和JDK 9的特点和增强功能,Oracle 对于 Java SE 9的实现。
JDK增强提案(JEP)是对JDK设计和实施非常重要更改的提案。
参阅JEP 1:JDK增强提案和路线图流程。
Java规范请求(JSR)描述了Java平台的建议和最终规范。
请参阅 JSR 概述。


JDK 9 中的重要变化
这些变化影响了多个技术领域。


Java平台模块系统
推出了一种新的Java编程组件--模块,是一个指定的,自描述代码和数据的集合。


模块系统:
1)引入一个新可选阶段,link time,它在编译和运行时之间,在此期间,可以将一组模块组合并且优化到一个自定义的运行时映像中;在 Java Platform, Standard Edition Tools Reference 中查看 jlink 工具。
2)添加选项到工具javac,jlink和java,可以指定模块路径在哪里,哪一个定义模块的定位。
3)引入模块化JAR文件,它是一个在根目录下包含module-info.class的JAR文件。
4)推出JMOD格式,它是一种类似于JAR的打包格式,除了它可以包含原生代码和配置文件外; 参见jmod工具。


JDK本身已经被分为一组模块。这个变化:
1)使您可以将JDK的模块组合到各种配置中,包括:
2)对应于JRE和JDK的配置。
3)和在Java SE 8中定义的各个紧凑型配置文件的内容大致相同的配置。
4)只包含一组指定的模块及其所需模块的? 自定义配置。
5)重新组织JDK和JRE运行时映像以适应模块,并提高性能,安全性和可维护性。
6)重新组织JDK和JRE运行时映像以适应模块,并提高性能,安全性和可维护性。
7)定义新的用于命名模块,类和存储在运行时映像中的资源的URI方案,不会显示映像的内部结构或格式。
8)删除endorsed-standards覆盖机制和扩展机制。
9)删除rt.jar和tools.jarJava运行时映像。

10)使大多数JDK的内部API默认无法访问,但留下一些关键的,广泛使用的内部API可访问,直到所有或大部分功能都支持替换。


运行该命令jdeps -jdkinternals以确定您的代码是否使用内部JDK API。


有关详细信息,请参阅以下内容:
1)Java平台模块系统(JSR 376)
2)JEP 261:模块系统
3)JEP 200:模块化JDK
4)JEP 220:模块化运行时映像
5)JEP 260:封装大多数内部API


JEP 223:新的Version-String方案
提供简化的version-string格式,有助于清楚区分主要,次要,安全和补丁更新版本。


新的版本字符串格式如下:
$MAJOR.$MINOR.$SECURITY.$PATCH
1)$MAJOR是主要版本增加的版本号,例如JDK 9,其中包含由Java SE平台规范指定的重要新功能。主要版本包含新功能和对现有功能的更改,这些功能将提前计划和公布。
2)$MINOR 是为每个次要更新增加的版本号,例如错误修复,标准API的修订,或相关平台规范范围之外的功能实现。
3)$SECURITY 是针对安全更新版本增加的版本号,其中包含关键修复程序,包括提高安全性所需的修补程序。
4)$PATCH 是包含已经一起测试的安全性和高优先级客户修补程序的版本的版本号。


请参阅在Java平台,标准版安装指南中新的Version-String格式。


JDK 9安装程序的新功能
JDK 9包括Microsoft Windows和MacOS平台的安装程序增强功能。


Microsoft Windows安装程序增强功能
1)使用安装程序的用户界面启用或禁用Web部署
提供在安装程序的“ 欢迎”页面中启用或禁用Web部署的选项。要启用Web部署,请在“ 欢迎”页面中选择“ 自定义安装”,单击“ 安装”,然后选中“ 在浏览器中启用Java内容”复选框。


macOS 安装程序增强功能
1)CPU版本可用性
在卸载当前CPU版本后,提供关于下一个CPU可用性的通知。
2)用户体验
优化更新JRE时用户体验。


JDK 9 中的工具的新功能

JEP 222:jshell:Java Shell(Read-Eval-Print Loop)
将交互式解释器环境(REPL)功能添加到Java平台。
该jshell工具提供了一个交互式命令行界面,用于评估Java编程语言的声明,语句和表达式。它有助于原型设计和探索编码选项,具有即时的结果和反馈。直接的反馈结合开始表达的能力对于教育是有用的 - 无论是学习Java语言还是只学习新的API或语言功能。
请参阅在Java平台,标准版工具参考中jshell,和在Java平台,标准版的Java Shell用户指南中介绍JShell。
JShell API使应用程序能够利用REPL功能。请参阅jdk.jshell包。


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


EP 231:删除启动时JRE版本选择
删除请求JRE版本的能力,该版本不是在启动时启动的JRE。
现代应用程序通常通过Java Web Start(使用JNLP文件),本机OS打包系统或活动安装程序进行部署。这些技术有自己的方法来管理根据需要查找或下载和更新所需的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。
请参阅在Java平台,标准版工具参考中javac。


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


请参阅在Java平台,标准版工具参考中jlink。


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


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


JEP 249:用于TLS的OCSP装订
启用TLS连接中的服务器以检查撤销的X.509证书撤销状态。服务器在TLS握手期间通过联系有关证书的在线证书状态协议(OCSP)响应者来执行此操作。然后,它将撤销信息附加或“装订”到其返回给客户端的证书,以便客户端可以采取适当的措施。


使客户端能够从TLS服务器请求OCSP装订。客户端检查来自支持该功能的服务器的装订响应。


请参阅在Java平台,标准版安全开发人员指南中OCSP装订。


JEP 246:利用GHASH和RSA的CPU指令
AES/GCM/NoPadding使用GHASH HotSpot内在函数,性能提升34倍到150倍 。从PCLMULQDQ英特尔x64 CPU上的xmul/xmulhi指令和SPARC 上的说明,可以看到GHASH内在函数的加速。


使用RSA HotSpot内在函数,BigInteger squareToLen和BigInteger mulAdd方法性能提高达50%。RSA内在函数适用于java.math.BigInteger类,在Intel x64平台上。


jdk.security.provider.preferred引入了新的安全属性,用来配置能显着提升特定算法性能的提供者。


请参阅在Java平台,标准版安全开发人员指南中配置特定算法的首选提供程序。


JEP 273:基于DRBG的SecureRandom实现
提供API 中NIST SP 800-90Ar1中规定的确定性随机位发生器(DRBG)机制的SecureRandom功能。


DRBG机制使用与SHA-512和AES-256一样强大的现代算法。这些机制中的每一个都可以配置不同的安全强度和功能,以匹配用户需求。


请参阅在Java平台,标准版安全开发人员指南中生成随机数字。


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密钥库通过存储私钥,可信公钥证书和密钥来提高机密性。此功能还为与其他系统(如Mozilla,Microsoft的Internet Explorer和支持PKCS12的OpenSSL)的互操作性提供了机会。


SunJSSE提供商,提供了java.security.KeyStore用于读取和写入PKCS12文件的PKCS12 格式的完整实现。


请参阅在Java平台,标准版安全开发人员指南中密钥管理。


该keytool密钥和证书管理实用程序可以创建PKCS12密钥库。


请参阅在Java平台,标准版安全开发人员指南中创建密钥库,和在Java平台,标准版工具参考中keytool。


JEP 287:SHA-3哈希算法
支持NIST FIPS 202中指定的SHA-3加密散列函数。


java.security.MessageDigestAPI 支持以下附加标准算法:SHA3-224,SHA3-256,SHA3-384和SHA3-512。


以下提供商支持SHA-3算法增强功能:
1)SUN提供商:SHA3-224,SHA3-256,SHA3-384和SHA3-512
2)OracleUcrypto提供商:Solaris 12.0支持的SHA-3摘要


下期导读
JDK 9中部署的新功能
JDK 9中Java语言的新特性
JDK 9中Javadoc的新功能
JDK 9中JVM的新特性
JDK 9中JVM调优的新功能


免责声明:
杰微刊遵循行业规范,任何转载的稿件都会明确标注来源和链接。
转载目的在于传递更多信息,并不代表杰微刊赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容。


分享到:
赚钱
喜欢
精品汇 精品汇总

手机应用大起底:APP如何让用户习惯成瘾?

随着手机APP应用的全面开花,如何让越来越多的用户上钩、让用户形成一种习惯,已经成为科技公司们最痴迷的一件事情。而手机的小小屏幕,用户的注意力只放在几个常用的APP上,在排队、喝咖啡、吃饭时,情不自禁地打开这些APP,究竟这些APP应该具有怎样的魔力?让我们从开发者的角度来一一探究

评论
*

还可以输入140个字符

提交
全部评论(条)

点击这里,查看赚钱机会