Для замены устаревших модулей совместной программы по методологии обследований с помощью API Java ее


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

  • java.активация С javax.activation пакета
  • java.в CORBA С javax.activity,javax.rmi,javax.rmi.CORBA и org.omg.* пакетов
  • java.транзакция С javax.transaction пакета
  • java.XML.привязать С 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 64

4 ответа:

вместо того, чтобы использовать устаревшие модули Java ее, использовать следующие артефакты.

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

основы Activiation компоненты JavaBeans представляет собой отдельное технологии (доступен в Maven Центральной):

<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.привязать)

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

<!-- 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 из.)

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

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

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

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

Общие Аннотации (Ява.в формате 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 (java.xml.ws) и 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 как что ж.

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