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

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.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →