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

新手上路,请多包涵

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

  • java.activation with javax.activation
  • java.corbajavax.activityjavax.rmijavax.rmi.CORBAorg.omg.*
  • java.transactionjavax.transaction
  • java.xml.bind 与所有 javax.xml.bind.*
  • java.xml.wsjavax.jwsjavax.jws.soapjavax.xml.soap 和所有 javax.xml.ws.*
  • java.xml.ws.annotationjavax.annotation

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

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


在您投票结束之前:

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

原文由 Nicolai Parlog 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 681
2 个回答

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

JAF ( java.activation )

JavaBeans Activation Framework(现为 Jakarta Activation )是一项独立技术(可在 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 更名为 Jakarta 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>

来源

原文由 Nicolai Parlog 发布,翻译遵循 CC BY-SA 4.0 许可协议

JDK9 的 JAXB (java.xml.bind)

在我的 jdk9/10 EA 桌面应用程序中完美运行

<properties>
    <jaxb-api.version>2.3.0</jaxb-api.version>
</properties>

<!-- JAXB 2.3.0 for jdk9+ -->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>${jaxb-api.version}</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>${jaxb-api.version}</version>
</dependency>
<!-- JAXB needs javax.activation module (jdk9) -->
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>javax.activation-api</artifactId>
    <version>1.2.0</version>
</dependency>

原文由 bourgesl 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题