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

Java 9 устаревшие шесть модулей, содержащих Java EE APIs и будет удален:

  • java.активация С javax.activation пакета
  • java.в CORBA С javax.activity, javax.rmi, javax.rmi.CORBA и org.omg.* пакетов
  • java.сделки С javax.transaction пакета
  • java.XML.bind С javax.xml.bind.* пакеты
  • Ява.в формате XML.с WS с javax.jws, javax.jws.soap, javax.xml.soap, а всего javax.xml.ws.* пакетов
  • Ява.в формате XML.с WS.аннотация с javax.annotation пакета

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

сделать это легче собрать knoweldge, я ответил тем, что знаю до сих пор, и сделал ответ Вики-сообществом. Я надеюсь, что люди будут расширять его, а не писать свои собственные ответы.


прежде чем голосовать, чтобы закрыть:

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

4 ответов


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

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

JavaBeans Activiation Framework-это автономная технология (доступна на Maven Central):

<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>javax.activation</artifactId>
    <version>1.2.0</version>
</dependency>

(источник)

сервер CORBA (java.в CORBA)

С JEP 320:

не будет автономной версии CORBA, если третьи стороны не возьмут на себя обслуживание API CORBA, реализацию 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.сделки)

автономный вариант:

<dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>javax.transaction-api</artifactId>
    <version>1.2</version>
</dependency>

(источник; посмотрите, как использовать 1.2 и предстоящем 1.3 на пути к классу и модулю.)

JAXB (java.XML.bind)

ссылка реализация:

<!-- Java 6 = JAXB version 2.0   -->
<!-- Java 7 = JAXB version 2.2.3 -->
<!-- Java 8 = JAXB version 2.2.8 -->
<!-- Java 9 = JAXB version 2.3.0 -->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.8</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.2.8</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.8</version>
</dependency>

(источник; JEP 320 объясняет, где взять schemagen и xjc from.)

ДЖЕКС-ЗС (Ява.в формате XML.с WS)

ссылочной реализации:

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-ri</artifactId>
    <version>2.3.0</version>
    <type>pom</type>
</dependency>

(источник; также объясняет, где взять wsgen и wsimport from.)

Общие Аннотации (Ява.в формате XML.с WS.аннотация)

Java Commons Примечания (доступно на Maven Central):

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.1</version>
</dependency>

(источник)


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

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


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

// 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 as что ж.

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