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, направленная на привлечение новых участников и развитие сообщества.
Источники
- Eclipse Foundation. Jakarta EE Documentation. 2024.
- Oracle Corporation. Java EE at a Glance. 2017.
- Red Hat. WildFly Documentation. 2023.
- Apache Software Foundation. Apache TomEE Documentation. 2024.
- IBM Corporation. WebSphere Liberty Documentation. 2023.
- Payara Services Ltd. Payara Server Documentation. 2024.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →