入门
本指南的目的是帮助您识别潜在问题,并在将现有Java应用程序迁移到最新JDK版本时为您提供有关如何继续的建议。该指南还强调了对最新版本所做的重大更改和增强。
本指南包含以下部分:
JDK 11发布的重大变化
准备迁移
从JDK 8迁移到以后的JDK版本
下一步
JDK 11发布的重大变化
在将应用程序迁移到JDK 11之前,您应该了解它与JDK 10版本之间的更新和更改。如果要从JDK 8迁移,则还应熟悉从JDK 8迁移到以后的JDK版本中描述的JDK 8和更高版本之间的差异。
以下是JDK 11中的一些重要更改:
Oracle不再提供JRE和Server JRE下载; 因此,自动更新不再可用。
Oracle不再提供32位Windows下载。
JDK中不提供Java Web Start,Java插件和Java控制面板。请参阅删除部署堆栈。
JDK中不再包含JavaFX。它现在可以从https://openjfx.io/单独下载。
JAXB和JAX-WS不再与JDK捆绑在一起。请参阅删除Java EE和CORBA模块。
此外,还需要了解与安全相关的更新以及很少删除的工具和组件。看到:
安全更新
删除了API,工具和组件
删除部署堆栈
Java部署技术在JDK 9中已弃用,在JDK 11中已删除。
Java applet和Web Start功能,包括Java插件,Java Applet Viewer,Java控制面板和Java Web Start,以及javaws工具,已在JDK 11中删除。
请参阅 删除Java部署技术。
删除Java EE和CORBA模块
在JDK 11中,删除了Java EE和CORBA模块。不推荐在JDK 9中删除这些模块。
删除的模块是:
java.xml.ws:用于XML Web服务的Java API(JAX-WS),用于Java平台的Web服务元数据以及用于Java的附件的SOAP(SAAJ)
java.xml.bind:用于XML绑定的Java体系结构(JAXB)
java.xml.ws.annotation:Java SE定义的JSR-250 Common Annotations的子集,用于支持Web服务
java.corba:CORBA
java.transaction:Java SE定义的Java Transaction API的子集,用于支持CORBA对象事务服务
java.activation:JavaBeans Activation Framework
java.se.ee:上面六个模块的聚合器模块
jdk.xml.ws:JAX-WS的工具
jdk.xml.bind:JAXB的工具
如果不更改构建,则不会编译引用这些API中的类的现有代码。同样,在这些API类的引用的类路径上的代码将失败,NoDefClassFoundError或者ClassNotFoundException,除非改变了应用程序的部署制成。
请参阅JEP 320:删除Java EE和CORBA模块以获取有关模块可能替换的更多信息。
注意:
您可以从Maven下载JAXB和JAX-WS。
安全更新
JDK 11版本包括传输层安全性(TLS)1.3规范(RFC 8446)的实现。
TLS 1.3是传输层安全性(TLS)协议的最新版本(2018年8月),默认情况下在JDK 11中启用。此版本不仅关注速度改进,还通过强调现代加密技术来更新协议的整体安全性。实践,并禁止过时或弱的加密算法。(例如,不再允许RSA密钥交换和普通DSA签名。)
TLS 1.3协议中添加了一些功能以提高向后兼容性,但有几个问题需要注意。有关详细信息,请参阅JEP 332。
删除安全证书
已从JDK 11中的信任库中删除以下根证书:
几个Symantec根CA.
巴尔的摩Cybertrust代码签署加州
SECOM根证书
AOL和Swisscom根证书
使用已删除证书的产品可能不再有效。如果需要这些证书,则必须使用缺少的证书配置和填充cacerts。为了证书添加到信任,看到密钥工具在<cite style="box-sizing: border-box;">Java平台,标准版工具参考</cite>指南。
删除了API,工具和组件
本节提供有关在JDK 11中删除的API,工具和组件的详细信息。
在JDK 11中删除了API
在JDK 11中删除了以下API。许多这些API在以前的版本中已被弃用,并且已被更新的API替换。有关可能的替代方案的信息,请参阅JDK 11 API规范。
javax.security.auth.Policy
java.lang.Runtime.runFinalizersOnExit(boolean)
java.lang.SecurityManager.checkAwtEventQueueAccess()
java.lang.SecurityManager.checkMemberAccess(java.lang.Class,int)
java.lang.SecurityManager.checkSystemClipboardAccess()
java.lang.SecurityManager.checkTopLevelWindow(java.lang.Object)
java.lang.System.runFinalizersOnExit(boolean)
java.lang.Thread.destroy()
java.lang.Thread.stop(java.lang.Throwable)
JDK 11未提供的工具和组件
以下是JDK 11未附带的工具和组件列表。
主要工具
appletviewer
请参阅JDK-8200146:删除appletviewer启动器。
CORBA工具
idlj
orbd
servertool
tnamesrv
此外,rmic(RMI编译器)将不再支持-idl或-iiop选项。请参阅 JDK 11发行说明。
Java Web服务工具
schemagen
网友评论