微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Java EE API 替换已弃用的 JPMS 模块

如何解决使用 Java EE API 替换已弃用的 JPMS 模块

不要使用已弃用的 Java EE 模块,而是使用以下工件。

JAF ( java.activation )

JavaBeans Activation Framework(现为 )是一项独立技术(可在 Maven Central 上获得):

<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>jakarta.activation</artifactId>
    <version>1.2.2</version>
</dependency>

CORBA ( java.corba )

来自JEP 320

除非第三方接管 CORBA API、ORB 实现、CosNaming 提供者等的维护,否则不会有 CORBA 的独立版本。第三方维护是可能的,因为 Java SE 平台支持 CORBA 的独立实现。相比之下,RMI-IIOP 的 API 仅在 Java SE 中定义和实现。除非启动专用的 JSR 来维护 RMI-IIOP,否则不会有独立版本的 RMI-IIOP,或者 API 的管理权由 Eclipse 基金会接管(Java EE 的管理权从 JCP 到 Eclipse 基金会的过渡包括GlassFish及其对 CORBA 和 RMI-IIOP 的实现)。

JTA ( java.transaction )

单机版:

<dependency>
    <groupId>jakarta.transaction</groupId>
    <artifactId>jakarta.transaction-api</artifactId>
    <version>1.3.3</version>
</dependency>

来源

JAXB ( java.xml.bind )

由于 Java EE ,因此 JAXB 现在由新工件提供:

<!-- API -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.3</version>
</dependency>

<!-- Runtime -->
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.3</version>
    <scope>runtime</scope>
</dependency>

<!-- Alternative runtime -->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.3</version>
    <scope>runtime</scope>
</dependency>

JAXB 参考实现页面

替代运行时由 Abhijit Sarkar 提出

schemagenxjc可以作为独立 JAXB 发行版的一部分从那里下载。

JAX-WS ( java.xml.ws )

参考实现:

<!-- API -->
<dependency>
    <groupId>jakarta.xml.ws</groupId>
    <artifactId>jakarta.xml.ws-api</artifactId>
    <version>2.3.3</version>
</dependency>

<!-- Runtime -->
<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.3.3</version>
</dependency>

独立发行版下载(包含wsgenwsimport)。

通用注解 ( java.xml.ws.annotation )

Java Commons Annotations(在 Maven Central 上可用):

<dependency>
    <groupId>jakarta.annotation</groupId>
    <artifactId>jakarta.annotation-api</artifactId>
    <version>1.3.5</version>
</dependency>

解决方法

Java 9弃用了六个包含 Java EE API
的模块,
它们很快就会被删除

  • java.activationjavax.activation
  • __带有javax.activity、、、javax.rmi和包javax.rmi.CORBAjava.corbaorg.omg.*
  • java.transactionjavax.transaction
  • java.xml.bind 与所有javax.xml.bind.*
  • java.xml.ws 和所有包javax.jws javax.jws.soapjavax.xml.soap``javax.xml.ws.*
  • __带有javax.annotation包的 java.xml.ws.annotation

哪些维护的第三方工件提供了这些 API?它们提供的这些 API 或它们必须提供哪些其他功能并不重要——重要的是,它们是这些模块/包的直接替代品吗?

为了更容易收集知识,我回答了我目前所知道的并将答案作为社区 wiki。我希望人们会扩展它而不是编写自己的答案。


在您投票结束之前:

  • 是的,已经有一些关于个别模块的问题,这个问题的答案当然会重复这些信息。但是 AFAIK 没有一点可以了解所有这些,我认为这很有价值。
  • 要求图书馆推荐的问题通常被认为是题外话,因为“它们往往会吸引固执己见的答案和垃圾邮件”,但我认为这不适用于这里。一组有效的库被清楚地描述:它们必须实现一个特定的标准。除此之外,其他一切都不重要,所以我认为意见和垃圾邮件的风险不大。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。