JDK15版本将于2020年9月份正式发布,JDK目前6个月发布一次,JDK16版本预计是在2021年3月份发布,接下来我们看一下OPENJDK16的预览版本,本次包含5个变化点。
变化点一:废除java.security.cert相关接口
java.security.cert.X509Certificate.getIssuerDN()
java.security.cert.X509Certificate.getSubjectDN()
java.security.cert.X509CRL.getIssuerDN()
java.security.cert.X509CertSelector.setIssuer(String)
java.security.cert.X509CertSelector.setSubject(String)
java.security.cert.X509CertSelector.getIssuerAsString()
java.security.cert.X509CertSelector.getSubjectAsString()
java.security.cert.X509CRLSelector.addIssuerName(String)
后续可以使用X500相关接口进行替换
变化点二:HttpClient.newHttpClient 和 HttpClient.Builder.build 将提供UncheckedIOException异常。
创建实例java.net.http如果无法分配实现所需的基础资源,则HttpClient可能会失败,并出现UncheckedIOException。通常,如果打开java.nio.channels.Selector,选择器不可用。在这种情况下Selector.open() 将引发 UncheckedIOException异常,UncheckedIOException异常封装了java.net.http.HttpClient的默认异常IOException。
变化点三:添加了3个SSL公司根CA证书
变化点四:在不区分大小写的字符串操作中支持补充字符
不区分大小写的操作java.lang.String类现在可以正确地对补充字符(码位值超过U+FFFF的字符)执行不区分大小写的比较。有关详细信息,请参见以下方法的更新:
compareToIgnoreCase(String other)
equalsIgnoreCase(String other)
regionMatches(boolean ignoreCase, ...)
例:
"\ud801\udc00".equalsIgnoreCase("\ud801\udc28")
应该返回true,因为以上方法的规范与实现是基于字符的,故'' ("ud801udc00") and '' ("ud801udc28") 是相等的
变化点五: jarsigner现在保留POSIX文件权限属性
当对包含POSIX文件权限属性的文件进行签名时,jarsigner现在将在新签名的文件中保留这些属性,但会警告这些属性是未签名的,并且不受签名的保护。在对此类文件执行jarsigner-verify操作期间,将打印相同的警告。