Вопрос-ответ

Replacements for deprecated JPMS modules with Java EE APIs

Замена устаревших модулей JPMS на Java EE API

В Java 9 признаны устаревшими шесть модулей, содержащих Java EE API, и они скоро будут удалены:


  • java.активация с javax.activation пакетом

  • java.corba с javax.activity, javax.rmi, javax.rmi.CORBA и org.omg.* пакетами

  • java.транзакция с javax.transaction пакетом

  • java.xml.bind со всеми javax.xml.bind.* пакетами

  • java.xml.ws с javax.jws, javax.jws.soap, javax.xml.soap и всеми javax.xml.ws.* пакетами

  • java.xml.ws.annotation с javax.annotation пакетом

Какие поддерживаемые артефакты сторонних производителей предоставляют эти API? Не имеет значения, насколько хорошо они предоставляют эти API или какие другие функции они могут предложить - важно только, являются ли они заменой этих модулей / пакетов?

Чтобы упростить сбор информации, я ответил тем, что знаю на данный момент, и разместил ответ в вики сообщества. Я надеюсь, что люди расширят его, вместо того чтобы писать свои собственные ответы.


Прежде чем вы проголосуете за закрытие:


  • Да, уже есть несколько вопросов по отдельным модулям, и ответ на этот вопрос, конечно, продублирует эту информацию. Но, AFAIK, нет единого пункта, чтобы узнать обо всех них, что, я думаю, имеет большую ценность.

  • Вопросы, требующие рекомендаций по библиотеке, обычно считаются не по теме, потому что "они, как правило, привлекают самоуверенные ответы и спам", но я не думаю, что это применимо здесь. Набор допустимых библиотек четко определен: они должны реализовывать определенный стандарт. Помимо этого, ничто другое не имеет значения, поэтому я не вижу большого риска для мнений и спама.

Переведено автоматически
Ответ 1

Вместо устаревших модулей Java EE используйте следующие артефакты.

JAF (java.активация)

Платформа активации JavaBeans (теперь 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 не будет, если третьи стороны не возьмут на себя обслуживание CORBA API, реализацию ORB, поставщика CosNaming и т.д. Поддержка сторонних производителей возможна, поскольку платформа Java SE поддерживает независимые реализации CORBA. Напротив, API для RMI-IIOP определен и реализован исключительно в Java SE. Автономной версии RMI-IIOP не будет, если для ее обслуживания не будет запущен специальный JSR или управление API не перейдет к Eclipse Foundation (передача управления Java EE от JCP к Eclipse Foundation включает в себя 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)

Since Java EE was rebranded to Jakarta EE, JAXB is now provided by new artifacts:

<!-- 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 Reference Implementation page.

The alternative runtime was brought up by @Abhijit Sarkar since com.sun.xml.bind:jaxb-impl has been deprecated.

schemagen and xjc can be downloaded from there too as part of a standalone JAXB distribution.

See also linked answer.

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>

Загрузка автономного дистрибутива (содержит wsgen и wsimport).

Общие аннотации (java.xml.ws.annotation)

Аннотации Java Commons (доступны в Maven Central):

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

(Исходный код)

Ответ 2

JAXB (java.xml.bind) для 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>
Ответ 3

Мне необходимо заменить в JAX-WS в (Ява.XML-файле.РВ) и JAXB (Java-приложений.XML-файле.привязка) для моей Весна загрузки 2 приложения а в итоге эти банки (Gradle в построить):

// 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.

Теперь это действительно запутанная ситуация, это работает, но как кто-либо должен быть уверен, что это лучшая замена, верно?

Ответ 4

Похоже, что jaxws-ri транзитивно зависит от commonj.sdo:commonj.sdo:jar: 2.1.1.v201112051852, который, по-видимому, можно найти в репозитории http://download.eclipse.org/rt/eclipselink/maven.repo

java jakarta-ee