Замена устаревших JPMS модулей из Java EE: обзор
Быстрый ответ
Если вы столкнулись с устаревшими модулями Java EE, то обновление зависимостей до Jakarta EE – это ваши первые шаги к решению проблемы. Внесите изменения в файл module-info.java
, добавив requires jakarta.activation;
для работы с соответствующим API. Так будет выглядеть обновлённая версия вашего проекта:
requires jakarta.activation; // Добро пожаловать в будущее!
Ниже представлен пример зависимости для Maven:
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
<version>2.0.1</version> <!-- Обновляемся до версии 2.0.1, ведь обновления наше всё! -->
</dependency>
В случае с Gradle обновлённая версия будет выглядеть следующим образом:
implementation 'jakarta.activation:jakarta.activation-api:2.0.1' // Элегантное решение, делающее жизнь проще!
Синхронизируйте данные изменения, и ваш проект будет в хорошей форме благодаря поддержке Jakarta EE.
Соединяем точки: тактика работы с зависимостями
Начиная с Java 11, некоторые модули Java EE были исключены из списка поддерживаемых, т. е. их обновления и поддержка прекратились. Не столь важно: на страже поддержки и обеспечения совместимости со современными облачными приложениями стоит Jakarta EE. Ниже представлены ключевые замены устаревших модулей API:
Устаревший модуль Java EE | Замена Jakarta EE |
---|---|
java.activation | jakarta.activation |
java.transaction | jakarta.transaction |
java.xml.bind | jakarta.xml.bind |
java.xml.ws | jakarta.xml.ws |
java.xml.ws.annotation | jakarta.annotation |
Как избежать неудачи: плавная адаптация
Переходный этап – это не только смена имен. Вам будет необходимо аккуратно перенастроить сборку проекта, заменив старые Maven координаты на новые или артефакты Gradle. Готовьтесь также к возможным минорным изменениям в новых API, которые могут повлиять на уже написанный код. После миграции будьте готовы к проведению детальной проверки вашего кода.
Визуализация
Можно рассматривать переход с устаревших модулей Java EE на новые версии Jakarta EE как замену старых деталей машины на более новые, которые повысят её эффективность:
Старые детали (🛠️): [Модули Java EE]
- javax.xml.ws (SOAP веб-сервисы)
- javax.activation (обработка данных)
- javax.annotation (аннотации)
Новые детали (🔧): [Заменяющие библиотеки]
- jakarta.xml.ws (🌐)
- jakarta.activation (📨)
- jakarta.annotation (📝)
Рабочий процесс:
Обновление 🛠️ -> 🔧:
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 или ускорить выполнение приложений.
Полезные материалы
- Jakarta® EE | Экосистема для корпоративных Java приложений | Java EE | Eclipse Foundation — основа для разработки облачных Java-приложений.
- Обучающие руководства Open Liberty — подробные учебники по Jakarta EE.
- GitHub – jakartaee/rest: Jakarta RESTful Web Services — источник практических рекомендаций по RESTful веб-сервисам в Jakarta.
- Eclipse Transformer | projects.eclipse.org — инструмент для трансформации Java байт-кода между различными версиями Java EE.
- Understanding Jakarta EE (Серия видео от Адама Биена) — видеосерия, которая глубоко погружает в особенности Jakarta EE.