Открыть сервисСервис

Jakarta EE

Jakarta EE — это набор спецификаций и технологий для разработки и выполнения корпоративных приложений на языке Java, развиваемый под эгидой Eclipse Foundation. Представляет собой эволюцию Java Platform, Enterprise Edition (Java EE), которая была передана сообществу Eclipse Foundation компанией Oracle в 2017 году. Jakarta EE является открытой, стандартизированной платформой, предназначенной для создания масштабируемых, надёжных и безопасных серверных приложений, веб-сервисов и микросервисов.

История

Предыстория: Java EE

Платформа Java EE (ранее J2EE) была создана компанией Sun Microsystems в конце 1990-х годов для упрощения разработки корпоративных приложений на Java. Она включала в себя набор стандартизированных API (Application Programming Interfaces), таких как Servlets, JSP (JavaServer Pages), EJB (Enterprise JavaBeans), JPA (Java Persistence API) и другие. После поглощения Sun Microsystems корпорацией Oracle в 2010 году, Java EE оставалась под контролем Oracle, что вызывало обеспокоенность сообщества из-за замедления темпов развития и неопределённости в отношении лицензирования.

Переход к Eclipse Foundation

В 2017 году Oracle приняла решение передать управление платформой Java EE в руки сообщества. Для этого был выбран Eclipse Foundation — независимая некоммерческая организация, управляющая открытыми проектами. Процесс передачи включал переименование платформы из Java EE в Jakarta EE, поскольку название «Java» оставалось товарным знаком Oracle. Первый релиз под новым именем — Jakarta EE 8 — был выпущен в сентябре 2019 года и представлял собой практически полный аналог Java EE 8, но с переименованными пакетами (например, javax. был заменён на jakarta.).

Дальнейшее развитие

После выпуска Jakarta EE 8 началась работа над новыми версиями, которые должны были привнести существенные изменения и обновления. В 2021 году вышла Jakarta EE 9, которая завершила переход на пространство имён jakarta.*. Jakarta EE 10, выпущенная в 2022 году, стала первым крупным релизом, включающим новые функциональные возможности, такие как поддержка виртуальных потоков (Project Loom) и улучшенная интеграция с CDI (Contexts and Dependency Injection). В 2024 году была выпущена Jakarta EE 11, которая продолжила развитие платформы, добавив поддержку Java 21 и новые возможности для микросервисной архитектуры.

Архитектура и компоненты

Jakarta EE построена на модульной архитектуре, где каждый компонент (спецификация) отвечает за определённый аспект корпоративного приложения. Основные компоненты включают:

Спецификации для веб-приложений

  • Jakarta Servlets — определяет API для обработки HTTP-запросов и генерации динамических веб-страниц.
  • Jakarta Server Pages (JSP)технология для создания веб-страниц с встраиванием Java-кода в HTML.
  • Jakarta Faces (JSF) — фреймворк для построения компонентных пользовательских интерфейсов на стороне сервера.
  • Jakarta RESTful Web Services (JAX-RS) — спецификация для создания RESTful веб-сервисов.
  • Jakarta WebSocket — API для поддержки двусторонней связи через протокол WebSocket.

Спецификации для бизнес-логики и данных

  • Jakarta Enterprise Beans (EJB) — компонентная модель для создания распределённых, транзакционных и безопасных бизнес-объектов.
  • Jakarta Persistence (JPA) — спецификация для объектно-реляционного отображения (ORM) и управления данными в реляционных базах данных.
  • Jakarta Transactions (JTA) — API для управления распределёнными транзакциями.
  • Jakarta Bean Validation — спецификация для декларативной валидации данных с помощью аннотаций.
  • Jakarta Contexts and Dependency Injection (CDI) — фреймворк для управления зависимостями и контекстами компонентов.

Спецификации для интеграции и обмена сообщениями

  • Jakarta Messaging (JMS) — API для асинхронного обмена сообщениями между компонентами приложения.
  • Jakarta Mail — API для отправки и получения электронной почты.
  • Jakarta Connectors (JCA)стандарт для подключения корпоративных информационных систем (EIS) к серверу приложений.

Спецификации для безопасности и управления

  • Jakarta Security — API для аутентификации и авторизации пользователей.
  • Jakarta Authentication — низкоуровневый API для обработки аутентификации.
  • Jakarta Authorization — API для управления политиками доступа.
  • Jakarta Management — API для мониторинга и управления сервером приложений.

Реализации и серверы приложений

Jakarta EE является набором спецификаций, а не готовым программным продуктом. Для его использования необходима реализация — сервер приложений, который поддерживает эти спецификации. Основные серверы приложений, совместимые с Jakarta EE:

  • Eclipse GlassFish — эталонная реализация Jakarta EE, разрабатываемая Eclipse Foundation. Является прямым наследником Oracle GlassFish.
  • Apache TomEE — легковесный сервер приложений на основе Apache Tomcat, поддерживающий подмножество спецификаций Jakarta EE.
  • WildFly (ранее JBoss Application Server) — сервер приложений от Red Hat, полностью совместимый с Jakarta EE.
  • Payara Server — коммерческая версия GlassFish с дополнительными функциями и поддержкой.
  • IBM WebSphere Liberty — модульный сервер приложений от IBM, поддерживающий Jakarta EE.
  • Oracle WebLogic Server — коммерческий сервер приложений от Oracle, поддерживающий Jakarta EE (начиная с версии 14c).

Применение

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

  • Финансовые системы — банковские приложения, системы обработки транзакций, торговые платформы.
  • Электронная коммерция — интернет-магазины, платёжные шлюзы, системы управления заказами.
  • Государственные информационные системы — порталы государственных услуг, системы электронного документооборота.
  • Телекоммуникации — системы биллинга, управления абонентами, обработки данных.
  • Логистика и транспорт — системы управления цепочками поставок, отслеживания грузов.

Критика и альтернативы

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

В качестве альтернатив Jakarta EE часто рассматриваются:

  • Spring Framework — более лёгкий и модульный фреймворк, который стал де-факто стандартом для разработки корпоративных приложений на Java, особенно в микросервисной архитектуре.
  • Micronaut — современный фреймворк, ориентированный на быстрый запуск и низкое потребление памяти.
  • Quarkus — фреймворк, оптимизированный для контейнерных сред и облачных развертываний, поддерживающий как Jakarta EE, так и Spring API.

Интересные факты

  • Переход от Java EE к Jakarta EE потребовал переименования всех пакетов в коде, что затронуло миллионы строк существующего кода. Для облегчения миграции были разработаны специальные инструменты.
  • Jakarta EE является одним из крупнейших проектов Eclipse Foundation, объединяющим более 20 спецификаций и десятки компаний-участников.
  • В 2023 году была запущена инициатива Jakarta EE Community, направленная на привлечение новых участников и развитие сообщества.

Источники

  1. Eclipse Foundation. Jakarta EE Documentation. 2024.
  2. Oracle Corporation. Java EE at a Glance. 2017.
  3. Red Hat. WildFly Documentation. 2023.
  4. Apache Software Foundation. Apache TomEE Documentation. 2024.
  5. IBM Corporation. WebSphere Liberty Documentation. 2023.
  6. Payara Services Ltd. Payara Server Documentation. 2024.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru