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

Java EE

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

История

Предпосылки и создание

В конце 1990-х годов Java (Standard Edition, Java SE) стала популярной для создания настольных и серверных приложений, однако для сложных корпоративных систем требовались дополнительные возможности: управление транзакциями, доступ к базам данных через пулы соединений, поддержка распределённых компонентов и веб-сервисов. В 1999 году компания Sun Microsystems (разработчик Java) выпустила первую версию платформы под названием Java 2 Platform, Enterprise Edition (J2EE) 1.2. В неё вошли такие ключевые технологии, как сервлеты, JSP (JavaServer Pages), EJB (Enterprise JavaBeans) и JDBC (Java Database Connectivity).

Эволюция под эгидой Sun Microsystems

Версии J2EE 1.3 (2001) и 1.4 (2003) добавили поддержку веб-сервисов (JAX-RPC, JAXP), улучшили модель EJB и ввели контейнеры для управления жизненным циклом компонентов. В 2006 году платформа была переименована в Java EE 5, что отразило отказ от версионности «2» и упрощение разработки за счёт аннотаций (например, @Stateless, @WebService).

Переход к Oracle и Eclipse Foundation

После приобретения Sun Microsystems корпорацией Oracle в 2010 году развитие Java EE продолжилось, но темпы замедлились. Версия Java EE 7 (2013) сделала акцент на облачные вычисления и HTML5, а Java EE 8 (2017) — на поддержку JSON-привязок и улучшение безопасности. В 2017 году Oracle передала права на спецификации Java EE в Eclipse Foundation (организация, зарегистрированная в Канаде, не признана в РФ нежелательной), что привело к переименованию платформы в Jakarta EE в 2019 году. С этого момента развитие продолжается под управлением сообщества Eclipse Foundation.

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

Многоуровневая модель

Java EE основана на многоуровневой архитектуре, где приложение разделяется на логические слои:

  • Клиентский уровень — веб-браузер, десктопное приложение или мобильное устройство, взаимодействующее через HTTP или RMI.
  • Веб-уровень — сервлеты, JSP, JSF (JavaServer Faces) для обработки запросов и генерации динамического контента.
  • Бизнес-уровень — EJB-компоненты, реализующие бизнес-логику, управление транзакциями и безопасностью.
  • Уровень интеграции — доступ к базам данных (JDBC, JPA), сообщениям (JMS), веб-сервисам (JAX-RS, JAX-WS) и другим внешним системам.

Контейнеры

Ключевая идея Java EE — использование контейнеров, которые предоставляют среду выполнения для компонентов и берут на себя инфраструктурные задачи:

  • Веб-контейнер (сервер приложений) управляет сервлетами, JSP и JSF.
  • EJB-контейнер управляет жизненным циклом EJB, пулом потоков, транзакциями и безопасностью.
  • Контейнер приложений (Application Client Container) — для клиентских приложений.

Основные спецификации (API)

Java EE включает десятки спецификаций, среди которых:

  • Сервлеты (Servlet) — основа для обработки HTTP-запросов.
  • JSP (JavaServer Pages) — технология для создания динамических веб-страниц.
  • JSF (JavaServer Faces) — компонентно-ориентированный фреймворк для построения веб-интерфейсов.
  • EJB (Enterprise JavaBeans) — компонентная модель для бизнес-логики с поддержкой транзакций, безопасности и пула.
  • JPA (Java Persistence API) — объектно-реляционное отображение (ORM) для работы с базами данных.
  • JMS (Java Message Service) — асинхронный обмен сообщениями между компонентами.
  • JAX-RS (Java API for RESTful Web Services) — создание REST-сервисов.
  • JAX-WS (Java API for XML Web Services) — SOAP-веб-сервисы.
  • CDI (Contexts and Dependency Injection) — управление зависимостями и контекстами.
  • Bean Validation — декларативная валидация данных.
  • Security APIаутентификация и авторизация.

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

Коммерческие реализации

  • Oracle WebLogic Serverпродукт корпорации Oracle, поддерживает Java EE 8 и Jakarta EE 8.
  • IBM WebSphere Application Serverсервер от IBM, исторически один из лидеров корпоративного рынка.
  • JBoss Enterprise Application Platform (EAP) — коммерческая версия WildFly от Red Hat.

Открытые реализации

  • Apache Tomcat — легковесный сервер, реализующий только сервлеты и JSP (не является полным сервером Java EE).
  • WildFly (ранее JBoss AS) — полноценный сервер приложений с открытым исходным кодом, поддерживает Jakarta EE.
  • GlassFish — эталонная реализация Java EE, разрабатываемая Eclipse Foundation.
  • Payara Server — форк GlassFish с дополнительными функциями для облачных сред.
  • Open Liberty — модульный сервер от IBM, поддерживающий Jakarta EE.

Применение

Корпоративные информационные системы

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

  • Транзакционность — гарантирует целостность данных при параллельных операциях.
  • Масштабируемостькластеризация, балансировка нагрузки, горизонтальное масштабирование.
  • Безопасность — встроенные механизмы аутентификации, авторизации и шифрования.
  • Интеграцию — поддержка протоколов SOAP, REST, JMS, JDBC, JCA.

Типичные сценарии

Критика и ограничения

Сложность и громоздкость

Java EE исторически критикуется за излишнюю сложность, особенно в ранних версиях (J2EE 1.2–1.4). Разработка требовала написания большого количества XML-дескрипторов, а EJB-компоненты были тяжеловесными. С версии Java EE 5 ситуация улучшилась благодаря аннотациям, но платформа остаётся более сложной по сравнению с современными лёгкими фреймворками (Spring Boot, Micronaut, Quarkus).

Конкуренция с Spring

С начала 2000-х годов фреймворк Spring (разработанный Родом Джонсоном) стал альтернативой Java EE, предлагая более простую модель внедрения зависимостей, аспектно-ориентированное программирование и интеграцию с различными технологиями. Spring Boot, появившийся в 2014 году, ещё больше упростил создание микросервисов и автономных приложений, что привело к снижению популярности полноценных серверов приложений Java EE. Тем не менее, Java EE остаётся востребованной в крупных legacy-системах и проектах, где требуется строгая стандартизация.

Переход на Jakarta EE

После передачи в Eclipse Foundation возникла неопределённость с лицензированием и брендингом. Переименование в Jakarta EE потребовало обновления всех библиотек и инструментов, что вызвало временные трудности. Однако сообщество активно развивает платформу: версия Jakarta EE 9 (2020) и 10 (2022) добавили поддержку Java SE 11 и 17, улучшили модульность и облачную интеграцию.

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

  • Эталонная реализация — GlassFish, разработанный Sun Microsystems, долгое время служил эталоном для проверки соответствия спецификациям Java EE.
  • Совместимость с Java SE — Java EE всегда базируется на Java Standard Edition (Java SE), используя её базовые классы и виртуальную машину.
  • Микросервисы — несмотря на изначальную ориентацию на монолитные приложения, Java EE адаптируется к микросервисной архитектуре через технологии MicroProfile (спецификации для микросервисов на Java).
  • Российские разработки — в России Java EE применяется в государственных информационных системах (например, «Госуслуги», «Электронный бюджет») и в банковском секторе (Сбербанк, ВТБ).

Источники

  • Спецификация Java EE 8 (JSR 366) — Oracle Corporation.
  • Спецификация Jakarta EE 10 — Eclipse Foundation.
  • «Java EE 8: The Big Picture» — Arun Gupta, 2018.
  • «Java EE 7 Essentials» — Arun Gupta, 2013.
  • Официальная документация WildFly (Red Hat).
  • Статья «История Java EE» на сайте Oracle Technology Network.
  • Материалы конференций JPoint и Joker (Россия).

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

На главную BFOmetr →