用 Java EE API 替换不推荐使用的 JPMS 模块JAF (java.activation)CORBA (java.corba)JTA (java.transaction))JAXB (java.xml.bind)JAX-WS (java.xml.ws)Common Annotations (java.xml.ws.annotation)

Java 9 不推荐使用包含 Java EE API 的六个模块,它们将很快被删除

  • java.activation with packagejavax.activation
  • 带有 、 、 和 软件包的 java.corbajavax.activityjavax.rmijavax.rmi.CORBAorg.omg.*
  • java.transaction with packagejavax.transaction
  • java.xml.bind with all packagesjavax.xml.bind.*
  • java.xml.ws 、 和所有包javax.jwsjavax.jws.soapjavax.xml.soapjavax.xml.ws.*
  • java.xml.ws.annotation with packagejavax.annotation

哪些维护的第三方工件提供这些 API?无论他们提供这些API的程度如何,或者他们必须提供哪些其他功能 - 重要的是,它们是这些模块/包的直接替代品吗?

为了更容易收集知识,我用我所知道的回答了这个问题,并将答案作为社区wiki。我希望人们能够扩展它,而不是写自己的答案。


在您投票关闭之前:

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

答案 1

与其使用不推荐使用的 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 中定义和实现。RMI-IIOP不会有一个独立的版本,除非启动一个专用的JSR来维护它,或者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提出

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

另请参阅链接的答案

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

Common Annotations (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>

()


答案 2

JAXB (java.xml.bind) for JDK9

在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>

推荐