Jakarta EE

Jakarta EE (ранее — Java Platform, Enterprise Edition, сокр. Java EE, до версии 5.0 — Java 2 Enterprise Edition или J2EE). В 2018 Eclipse Foundation переименовала Java EE в Jakarta EE — набор спецификаций и соответствующей документации для языка Java, описывающей архитектуру серверной платформы для задач средних и крупных предприятий.

Спецификации детализированы настолько, чтобы обеспечить переносимость программ с одной реализации платформы на другую. Основная цель спецификаций — обеспечить масштабируемость приложений и целостность данных во время работы системы. Java EE во многом ориентирована на использование её через веб, как в интернете, так и в локальных сетях. Вся спецификация создаётся и утверждается через JCP (Java Community Process) в рамках инициативы Sun Microsystems Inc.

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

Популярности Java EE также способствует то, что Sun предлагает бесплатный комплект разработки, SDK, позволяющий предприятиям разрабатывать свои системы, не тратя больших средств. В этот комплект входит сервер приложений GlassFish с лицензией для разработки.

Версии 

Актуальная версия Java EE имеет номер 8.0. Развитие технологии Java EE отображено на странице истории версий.

При переходе на версию 5.0 изменилось и название спецификации с J2EE [] (Java 2 Platform, Enterprise Edition), на Java Platform, Enterprise Edition, сокращённо Java EE [].

Технологии 
Java EE включает в себя стандарты следующих технологий:

API в Java EE 
Java EE API включает в себя несколько технологий, которые расширяют функциональность базовых Java SE API-интерфейсов.

javax.servlet. * 
Спецификация сервлетов определяет набор программных интерфейсов для обслуживания HTTP-запросов. Она включает в себя спецификации JavaServer Pages.

javax.websocket. * 
Спецификация Java API для WebSocket определяет набор программных интерфейсов для обслуживания WebSocket-соединений.

javax.faces. * 
Этот пакет является корнем JavaServer Faces API. JSF — это технология для построения пользовательских интерфейсов из компонентов.

javax.faces.component. * 
Этот пакет — составная часть JavaServer Faces (JSF) API.

javax.el. * 
Этот пакет определяет классы и интерфейсы для языка выражений в Java EE. Expression Language (EL) — это простой язык, изначально предназначенный для удовлетворения конкретных потребностей разработчиков веб-приложений. Он используется, в частности, в JSF для связывания компонентов (backing) beans и в CDI name beans, но может быть использован для других платформ.

javax.enterprise.inject. * 
Эти пакеты определяют аннотации вложения для .

javax.enterprise.context. * 
Эти пакеты определяют контекст аннотации и интерфейсы для .

javax.ejb. * 
Enterprise JavaBean (EJB) определяет набор API-интерфейсов удалённого вызова процедур (с использованием RMI или RMI-IIOP), управление параллелизмом, инъекции зависимости и контроля доступа для бизнес-объектов. Этот пакет содержит классы и интерфейсы, определяющие связь между корпоративным компонентом и его клиентом, а также между корпоративным компонентом и EJB-контейнером.

javax.validation. * 
Этот пакет содержит аннотации и интерфейсы для поддержки декларативной проверки  API. Bean Validation обеспечивает единый способ обеспечения ограничения на bean (например, классов JPA модели), что может быть реализовано с помощью cross-layer.

javax.persistence. * 
Этот пакет содержит классы и интерфейсы, которые определяют связь между поставщиком, управляемым классом и клиентом Java Persistence API (JPA).

javax.transaction. * 
Этот пакет предоставляет Java Transaction API (JTA), который содержит интерфейсы и аннотации для взаимодействия с поддержкой транзакций, предлагаемой Java EE.

javax.security.auth.message. * 
Этот пакет предоставляет Java SPI (JASPIC), который содержит интерфейсы и классы для создания модулей аутентификации для безопасных "Java EE"-приложений.

javax.enterprise.concurrent. * 
Этот пакет предоставляет интерфейсы для взаимодействия непосредственно с платформой Java EE, по умолчанию управляет запуском потоков.

javax.jms. * 
Этот пакет определяет Java Message Server (JMS) API (Application Programming Interface). JMS API предоставляет для программ Java распространенный способ создавать, отправлять, получать и читать сообщения системы корпоративного обмена сообщениями.

javax.batch.api. * 
Этот пакет определяет вступление AP для Java EE batch applications. Batch applications API предоставляет средства для запуска длительных фоновых задач, которые, возможно, связаны с большим объёмом данных.

javax.resource. * 
Этот пакет определяет . Java EE Connector Architecture (JCA) является Java-технологией для решения проблем подключения серверов приложений к их корпоративным информационным системам (КИС) в рамках интеграции корпоративных приложений (EAI).

Сервер приложений 
Сервер приложений J2EE (часто называемый J2EE-контейнер) — это реализация системы в соответствии со спецификацией J2EE, обеспечивающая работу модулей с логикой конкретного приложения. Включает в себя как минимум следующие сервисы:
 EJB-контейнер, который поддерживает автоматическую синхронизацию Java-объектов с базой данных (CMP — container managed persistence, BMP — bean managed persistence);
 JMS — сервис доставки сообщений между компонентами и серверами;
 управление ресурсами (доступ к СУБД, файловой системе, почтовому серверу и т. д.);
 безопасность и защита данных;
 поддержка транзакций (в том числе и распределённых, двухфазных). См. Java Transaction API.
 веб-сервер и сервлет-сервер;
 поддержка веб-сервисов.
 JSF

Разработчики J2EE-приложений также пишут свои программы в соответствии с спецификациями J2EE, что обеспечивает их работу внутри таких серверов.

Технологию J2EE рационально использовать для реализации крупных проектов, например, для организации сложных веб-порталов и предоставления услуг онлайн, особенно если необходимо обеспечить бесперебойную работу многих тысяч пользователей.

Свободные серверы с открытым исходным кодом
 GlassFish
 JBoss Application Server (Apache Tomcat optional)
 WildFly (наследник JBoss с поддержкой JavaEE7)
 Apache Geronimo (использует Apache Tomcat или Jetty)
 Apache TomEE и TomEE Plus (основан на Tomcat с использованием других технологий Apache, нет поддержки JavaEE Full Profile)
 Enhydra Enterprise (использует Apache Tomcat)
 JOnAS (использует Apache Tomcat)
 Resin (собственный Servlet- и EJB-контейнеры)
 Oracle Glassfish Server (Эталонная реализация на основе GlassFish)

Коммерческие серверы
 ATG Dynamo Application Server (DAS)
 IBM WebSphere
 SAP NetWeaver Application Server
 TmaxSoft JEUS
 Oracle WebLogic (BEA)
 Oracle Application Server
 Orion Application Server
 Borland Application Server
 Oracle iPlanet

Отдельные Servlet/JSP-контейнеры
 Apache Tomcat — Open Source
 Caucho Technology Resin — Open Source
 Enhydra Server — Open Source
 Jetty — Open Source

Отдельные EJB-контейнеры
 Apache OpenEJB — Open Source

См. также 
 Шаблоны J2EE
 Java
 JSP
 EJB
 Hibernate
 Tapestry
 Seam
 JMS
 SOA
 CORBA
 DTO
 Microsoft .NET — конкурирующая технология

Примечания

Ссылки 
 Официальная страница Java EE

Литература 
 
 
 

Java

Веб-серверы на основе Java
Серверы приложений