Jakarta EE
Jakarta EE | |
---|---|
Тип | веб-фреймворк и рабочая группа |
Автор | Sun Microsystems |
Разработчики | Sun Microsystems, Oracle и Eclipse Foundation |
Написана на | Java |
Операционная система | Кроссплатформенное программное обеспечение |
Последняя версия |
|
Сайт | 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 [ˌdʒeɪˈtuː ˌiːˈiː] (Java 2 Platform, Enterprise Edition), на Java Platform, Enterprise Edition, сокращённо Java EE [ˈdʒɑːvə ˌiːˈiː].
Версия | Полное имя | Дата публикации |
---|---|---|
1.0 | Java 2 Platform Enterprise Edition, v 1.0 | декабрь 1999 |
1.2 | Java 2 Platform Enterprise Edition, v 1.2 | 2000 |
1.2.1 | Java 2 Platform Enterprise Edition, v 1.2.1 | 23 мая 2000 |
1.3 | Java 2 Platform Enterprise Edition, v 1.3 | 24 сентября 2001 |
1.4 | Java 2 Platform Enterprise Edition, v 1.4 | 24 ноября 2003 |
5.0 | Java Platform, Enterprise Edition, v 5 | 11 мая 2006 |
6.0 | Java Platform, Enterprise Edition, v 6 | 6 декабря 2009 |
7.0 | Java Platform, Enterprise Edition, v 7 | 12 июня 2013 |
8.0 | Java Platform, Enterprise Edition, v 8 | 18 сентября 2017[2][3] |
9.0 | Java Platform, Enterprise Edition, v 9 | ~ 2019 |
Технологии
Java EE включает в себя стандарты следующих технологий:
Описание | Использованная версия | |||||
---|---|---|---|---|---|---|
J2EE 1.4 | Java EE 5 | Java EE 6 | Java EE 7 | Java EE 8 | ||
2003 г. | 2006 г. | 2009 г. | 2013 г. | 2018 г. | ||
EJB | Enterprise JavaBeans — спецификация технологии серверных компонентов, содержащих бизнес-логику | 2.1 | 3.0 | 3.1 | 3.2 | 3.2 |
JPA | Java Persistence API — управление постоянством и объектно-реляционное отображение | Нет | 1.0 | 2.0 | 2.1 | 2.2 |
Servlet | Обслуживание запросов веб-клиентов | 2.4 | 2.5 | 3.0 | 3.1 | 4.0 |
JSP | JavaServer Pages — динамическая генерация веб-страниц на стороне сервера | 2.0 | 2.1 | 2.2 | 2.3 | 2.3 |
JSTL | JavaServer Pages Standard Tag Library | Нет | 1.2 | 1.2 | 1.2 | 1.2 |
JSF | JavaServer Faces — компонентный серверный фреймворк для разработки веб-приложений на технологии Java | Нет | 1.2 | 2.0 | 2.2 | 2.3 |
JAX-WS | Java API for XML Web Services — создание веб-сервисов | 1.0 | 1.2 | 1.2 | 2.2 | 2.2 |
JAX-RS | Java API for RESTful Web Services — создание RESTful веб-сервисов | Нет | Нет | 1.1 | 2.0 | 2.1 |
WebSocket | Java API for WebSocket | Нет | Нет | Нет | 1.0 | 1.1 |
JSON-P | Java API for JSON Processing — разбор и генерация JSON | Нет | Нет | Нет | 1.0 | 1.1 |
JSON-B | Java API for JSON Binding — преобразование Java объектов в/из JSON | Нет | Нет | Нет | Нет | 1.0 |
JNDI | Java Naming and Directory Interface — служба каталогов | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
JMS | Java Message Service — обмен сообщениями | 1.1 | 1.1 | 1.1 | 2.0 | 2.0 |
JTA | Java Transaction API — управление транзакциями | 1.0.1B | 1.1 | 1.1 | 1.2 | 1.2 |
JAAS | Java Authentication and Authorization Service — Java-реализация PAM | 1.0 | 1.0 | 1.0 | ||
JavaMail | Получение и отправка электронной почты | 1.2 | 1.4 | 1.4 | 1.5 | 1.6 |
JACC | Java Authorization Contract for Containers | 1.0 | 1.1 | 1.1 | 1.4 | 1.5 |
JCA | J2EE Connector Architecture | 1.5 | 1.5 | 1.6 | 1.6 | 1.7 |
JAF | JavaBeans Activation Framework | 1.0 | 1.1 | 1.1 | 1.1 | 1.1 |
StAX | Streaming API for XML | Нет | 1.0 | 1.0 | 1.0 | 1.0 |
CDI | Context and Dependency Injection | Нет | Нет | 1.0 | 1.1 | 2.0 |
Validation | Bean Validation | Нет | Нет | 1.0 | 1.1 | 2.0 |
Security | Java EE Security API | Нет | Нет | Нет | Нет | 1.0 |
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. *
Эти пакеты определяют аннотации вложения для (CDI) API (англ.).
javax.enterprise.context. *
Эти пакеты определяют контекст аннотации и интерфейсы для (CDI) API (англ.).
javax.ejb. *
Enterprise JavaBean (EJB) определяет набор API-интерфейсов удалённого вызова процедур (с использованием RMI или RMI-IIOP), управление параллелизмом, инъекции зависимости и контроля доступа для бизнес-объектов. Этот пакет содержит классы и интерфейсы, определяющие связь между корпоративным компонентом и его клиентом, а также между корпоративным компонентом и EJB-контейнером.
javax.validation. *
Этот пакет содержит аннотации и интерфейсы для поддержки декларативной проверки Bean 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[англ.]. 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
См. также
Примечания
- ↑ The Eclipse Foundation’s Jakarta EE Working Group Releases Jakarta EE 10 — 2022.
- ↑ JSR 366: Java Platform, Enterprise Edition 8 (Java EE 8) Specification (англ.). Java Community Process. Дата обращения: 22 декабря 2017. Архивировано 22 марта 2018 года.
- ↑ "Компания Oracle выпустила Java SE 9 и Java EE 8". OpenNET. 2017-09-22. Архивировано 22 декабря 2017. Дата обращения: 22 декабря 2017.
Ссылки
Литература
- Себастьян Дашнер. Изучаем Java EE. Современное программирование для больших предприятий. — СПб.: «Питер», 2018. — 384 с. — ISBN 978-5-4461-0774-2.
- Арун Гупта. Java EE 7. Основы = Java EE 7 Essentials. — М.: «Вильямс», 2014. — 336 с. — ISBN 978-5-8459-1896-3.
- Браун К.; Крейг Г.; Хестер Г. и др. Создание корпоративных Java-приложений для IBM WebSphere. — Кудиц-Образ, 2005. — 860 с. — ISBN 5-9579-0061-3, 0-321-18579-X.