Для замены устаревших модулей совместной программы по методологии обследований с помощью 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 ответа:
вместо того, чтобы использовать устаревшие модули 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
как что ж.теперь это действительно неприятная ситуация, она работает, но как кто-то должен быть уверен, что это лучшая замена, верно?