logo

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

Быстрый ответ

Если вы столкнулись с устаревшими модулями Java EE, то обновление зависимостей до Jakarta EE – это ваши первые шаги к решению проблемы. Внесите изменения в файл module-info.java, добавив requires jakarta.activation; для работы с соответствующим API. Так будет выглядеть обновлённая версия вашего проекта:

Java
Скопировать код
requires jakarta.activation; // Добро пожаловать в будущее!

Ниже представлен пример зависимости для Maven:

xml
Скопировать код
<dependency>
    <groupId>jakarta.activation</groupId>
    <artifactId>jakarta.activation-api</artifactId>
    <version>2.0.1</version> <!-- Обновляемся до версии 2.0.1, ведь обновления наше всё! -->
</dependency>

В случае с Gradle обновлённая версия будет выглядеть следующим образом:

groovy
Скопировать код
implementation 'jakarta.activation:jakarta.activation-api:2.0.1' // Элегантное решение, делающее жизнь проще!

Синхронизируйте данные изменения, и ваш проект будет в хорошей форме благодаря поддержке Jakarta EE.

Соединяем точки: тактика работы с зависимостями

Начиная с Java 11, некоторые модули Java EE были исключены из списка поддерживаемых, т. е. их обновления и поддержка прекратились. Не столь важно: на страже поддержки и обеспечения совместимости со современными облачными приложениями стоит Jakarta EE. Ниже представлены ключевые замены устаревших модулей API:

Устаревший модуль Java EEЗамена Jakarta EE
java.activationjakarta.activation
java.transactionjakarta.transaction
java.xml.bindjakarta.xml.bind
java.xml.wsjakarta.xml.ws
java.xml.ws.annotationjakarta.annotation

Как избежать неудачи: плавная адаптация

Переходный этап – это не только смена имен. Вам будет необходимо аккуратно перенастроить сборку проекта, заменив старые Maven координаты на новые или артефакты Gradle. Готовьтесь также к возможным минорным изменениям в новых API, которые могут повлиять на уже написанный код. После миграции будьте готовы к проведению детальной проверки вашего кода.

Визуализация

Можно рассматривать переход с устаревших модулей Java EE на новые версии Jakarta EE как замену старых деталей машины на более новые, которые повысят её эффективность:

Markdown
Скопировать код
Старые детали (🛠️): [Модули Java EE]
- javax.xml.ws (SOAP веб-сервисы)
- javax.activation (обработка данных)
- javax.annotation (аннотации)
Markdown
Скопировать код
Новые детали (🔧): [Заменяющие библиотеки]
- jakarta.xml.ws (🌐)
- jakarta.activation (📨)
- jakarta.annotation (📝)

Рабочий процесс:

Markdown
Скопировать код
Обновление 🛠️ -> 🔧:
1. Определяем устаревшую деталь 🧐
2. Ищем новый аналог (🔧)
3. Производим замену и обновляем код 🔄

Результат: отлично функционирующий механизм (🔧), работающий на свежих деталях, соответствующих современным стандартам и библиотекам.

Альтернативные стратегии: инструменты, декодирование и решение проблем

Сторонние библиотеки: ваше новое надёжное решение

Использование сторонних библиотек последних версий может добавить дополнительных функций и повысить производительность проекта. Например, org.glassfish.jaxb:jaxb-runtime станет незаменимым при работе с JAXB в JDK 9 и более поздних версиях. Убедитесь, что jaxb-impl и jaxb-api версий, которые не вызывают конфликтов.

Зависимости во время выполнения: знание того, когда их необходимо включать

Добавляйте зависимости во время выполнения только при сборке проекта для JRE 9 или более новых версий, тем самым вы сможете применить полногоценный модульный подход Java в последних релизах.

Готовность к будущим версиям Java

Будьте осведомленны о планах удаления устаревших API и следите за новостями основных библиотек, чтобы актуализировать свои проекты согласно новым версиям Java.

Прощайте, CORBA API

Если в вашем приложении используется CORBA API (модуль java.corba), стоит обдумать его замену. Возможно, отказ от этой технологии будет благоприятно сказаться на вашем проекте в долгосрочной перспективе.

Обращение к аннотациям

API общих аннотаций (javax.annotation-api) может стать заменой java.xml.ws.annotation. Облегчите переход от @WebServiceRef и подобных аннотаций к их аналогам в Jakarta EE.

Исследование альтернативных сред выполнения

Иногда JVM не справляется с некоторыми задачами, особенно при работе с XML. Рассмотрите такие альтернативы как GraalVM, которая сможет улучшить совместимость JAXB или ускорить выполнение приложений.

Полезные материалы

  1. Jakarta® EE | Экосистема для корпоративных Java приложений | Java EE | Eclipse Foundation — основа для разработки облачных Java-приложений.
  2. Обучающие руководства Open Liberty — подробные учебники по Jakarta EE.
  3. GitHub – jakartaee/rest: Jakarta RESTful Web Services — источник практических рекомендаций по RESTful веб-сервисам в Jakarta.
  4. Eclipse Transformer | projects.eclipse.org — инструмент для трансформации Java байт-кода между различными версиями Java EE.
  5. Understanding Jakarta EE (Серия видео от Адама Биена) — видеосерия, которая глубоко погружает в особенности Jakarta EE.