首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java替换不推荐的JPMS模块

用Java替换不推荐的JPMS模块
EN

Stack Overflow用户
提问于 2018-01-11 09:54:58
回答 11查看 127.7K关注 0票数 271

Java9 不推荐包含Java的六个模块 --它们很快就变成了将被移除

  • 带有java.activation包的javax.activation
  • java.corba与javax.activityjavax.rmijavax.rmi.CORBAorg.omg.*
  • 带有java.transaction包的javax.transaction
  • 带有所有java.xml.bind包的javax.xml.bind.*
  • java.xml.ws与javax.jwsjavax.jws.soapjavax.xml.soap和所有javax.xml.ws.*
  • 带有java.xml.ws.annotation包的javax.annotation

哪些维护了第三方构件提供了这些API?不管他们提供的API有多好,或者他们必须提供哪些其他特性--重要的是,它们是替代这些模块/包的替代品吗?

为了更容易地收集知识,我用我目前所知道的来回答,并将这个答案变成了一个社区wiki。我希望人们能扩展它,而不是写他们自己的答案。

在投票结束之前:

  • 是的,已经有一些关于各个模块的问题,对这个问题的回答当然会重复这些信息。但是AFAIK没有一个单一的点来学习所有这些,我认为这些都有很大的价值。
  • 询问图书馆推荐的问题通常被认为是非主题的,因为“它们往往会吸引固执己见的答案和垃圾邮件”,但我认为这不适用于这里。有效库的集合是明确的:它们必须实现特定的标准。除此之外,没有其他的问题,所以我不认为有太多的风险意见和垃圾邮件。
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2018-01-11 09:55:25

不要使用不推荐使用的Java模块,而是使用以下构件。

JAF (java.activation)

JavaBeans激活框架(现在的雅加达激活)是一种独立的技术(可在Maven Central上获得):

代码语言:javascript
复制
<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>jakarta.activation</artifactId>
    <version>1.2.2</version>
</dependency>

(来源)

CORBA (java.corba)

来自9月320

除非第三方接管CORBA、ORB实现、CosNaming提供者等的维护,否则就不会有独立的CORBA版本。第三方维护是可能的,因为Java平台认可了CORBA的独立实现。相反,RMI的API仅在Java中定义和实现。除非一个专用的JSR开始维护它,或者API的管理工作由Eclipse接管,否则不会有一个独立版本的RMI( Java从JCP到Eclipse的管理过程包括GlassFish及其实现的和RMI)。

JTA (java.transaction)

独立版本:

代码语言:javascript
复制
<dependency>
    <groupId>jakarta.transaction</groupId>
    <artifactId>jakarta.transaction-api</artifactId>
    <version>1.3.3</version>
</dependency>

(来源)

JAXB (java.xml.bind)

由于Java 被重新命名为Jakarta ,JAXB现在由新的构件提供:

代码语言:javascript
复制
<!-- 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 (java.xml.ws)

参考执行情况:

代码语言:javascript
复制
<!-- 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共用批注 (可在Maven Central获得):

代码语言:javascript
复制
<dependency>
    <groupId>jakarta.annotation</groupId>
    <artifactId>jakarta.annotation-api</artifactId>
    <version>1.3.5</version>
</dependency>

(来源)

票数 302
EN

Stack Overflow用户

发布于 2018-01-16 10:25:24

JAXB (java.xml.bind) for JDK9

在jdk9 9/10 EA上的桌面应用程序中完美地工作

代码语言:javascript
复制
<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>
票数 35
EN

Stack Overflow用户

发布于 2018-09-07 11:07:05

我需要将JAXB (java.xml.ws)和JAXB (java.xml.bind)替换为基于Spring 2的应用程序,最后得到了这些JAX (Gradle构建):

代码语言:javascript
复制
// replacements for deprecated JDK module java.xml.ws
runtimeOnly 'javax.xml.ws:jaxws-api:2.3.0' // javax.xml.ws.* classes
runtimeOnly 'javax.jws:jsr181-api:1.0-MR1' // for javax.jws.* classes

// replacement for deprecated JDK module java.xml.bind
runtimeOnly 'javax.xml.bind:jaxb-api'
runtimeOnly 'org.glassfish.jaxb:jaxb-runtime:2.3.0.1'
runtimeOnly 'org.glassfish:javax.json:1.1.2'
runtimeOnly 'org.eclipse:yasson:1.0.1'

(您可能需要compile或其他范围,runtimeOnly对我们来说就足够了。)

我注意到https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-core被描述为“旧”,使用这个答案用于基于org.glassfish的东西,这也带来了org.eclipse.yasson

现在这真的很混乱,很管用,但是怎么才能确定它是最好的替代品,对吗?

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48204141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档