Набор спецификаций, расширяющих Java SE
Jakarta EE , ранее известная как Java Platform, Enterprise Edition ( Java EE ) и Java 2 Platform, Enterprise Edition ( J2EE ), представляет собой набор спецификаций, расширяющий Java SE [1] спецификациями для корпоративных функций, таких как распределенные вычисления и веб-сервисы . [2] Приложения Jakarta EE запускаются в эталонных средах выполнения , которые могут представлять собой микросервисы или серверы приложений , которые обрабатывают транзакции, безопасность, масштабируемость, параллелизм и управление развертываемыми ими компонентами.
Jakarta EE определяется своей спецификацией . Спецификация определяет API (интерфейс прикладного программирования) и их взаимодействие. Как и в случае с другими спецификациями Java Community Process , поставщики должны соответствовать определенным требованиям соответствия, чтобы объявить свои продукты совместимыми с Jakarta EE .
Примерами контекстов, в которых используются среды выполнения, ссылающиеся на Jakarta EE, являются: электронная коммерция , бухгалтерский учет , банковские информационные системы .
История
Платформа была известна как Java 2 Platform, Enterprise Edition или J2EE с версии 1.2, пока название не было изменено на Java Platform, Enterprise Edition или Java EE в версии 1.5.
Java EE поддерживалась Oracle в рамках процесса сообщества Java . 12 сентября 2017 года корпорация Oracle объявила, что представит Java EE в Eclipse Foundation . [3] Проект верхнего уровня Eclipse получил название Eclipse Enterprise for Java (EE4J). [4] Фонд Eclipse не смог договориться с Oracle по поводу использования товарных знаков javax и Java. [5] Oracle владеет товарным знаком «Java», и платформа была переименована с Java EE в Jakarta EE. [6] [7] Название относится к крупнейшему городу на острове Ява , а также столице Индонезии Джакарте . [8] Не следует путать это название с бывшим проектом Jakarta Project , который способствовал развитию ряда нынешних и бывших проектов Java в Apache Software Foundation .
Технические характеристики
Jakarta EE включает несколько спецификаций, которые служат различным целям, например создание веб-страниц, чтение и запись из базы данных транзакционным способом, управление распределенными очередями.
API-интерфейсы Jakarta EE включают в себя несколько технологий, расширяющих функциональность базовых API-интерфейсов Java SE , таких как Jakarta Enterprise Beans , соединители , сервлеты , серверные страницы Jakarta и несколько технологий веб-сервисов .
Веб-спецификации
- Jakarta Servlet : определяет, как управлять HTTP-запросами синхронно или асинхронно. Это низкий уровень, и на него опираются другие спецификации Jakarta EE;
- Jakarta WebSocket: спецификация API, определяющая набор API для обслуживания соединений WebSocket ;
- Jakarta Faces : технология построения пользовательских интерфейсов из компонентов;
- Jakarta Expression Language ( EL ) — это простой язык, изначально разработанный для удовлетворения конкретных потребностей разработчиков веб-приложений. Он используется специально в Jakarta Faces для привязки компонентов к (резервным) bean-компонентам, а также в контекстах и внедрении зависимостей к именованным bean-компонентам, но может использоваться на всей платформе.
Спецификации веб-сервиса
Спецификации предприятия
- Jakarta Activation ( JAF ) определяет архитектуру для расширения компонентов Beans путем обеспечения типизации данных и привязок таких типов.
- Jakarta Contexts and Dependency Injection ( CDI ) — это спецификация, обеспечивающая контейнер внедрения зависимостей ;
- Спецификация Jakarta Enterprise Beans ( EJB ) определяет набор облегченных API-интерфейсов, которые будет поддерживать контейнер объектов (контейнер EJB) для обеспечения транзакций (с использованием JTA ), удаленных вызовов процедур (с использованием RMI или RMI-IIOP ), управления параллелизмом , зависимостей. внедрение и контроль доступа к бизнес-объектам. Этот пакет содержит классы и интерфейсы Jakarta Enterprise Beans, которые определяют контракты между корпоративным компонентом и его клиентами, а также между корпоративным компонентом и контейнером ejb.
- Jakarta Persistence ( JPA ) — это спецификации объектно-реляционного сопоставления между таблицами реляционной базы данных и классами Java.
- Jakarta Transactions ( JTA ) содержит интерфейсы и аннотации для взаимодействия с поддержкой транзакций, предлагаемой Jakarta EE. Несмотря на то, что этот API абстрагируется от деталей действительно низкого уровня, интерфейсы также считаются несколько низкоуровневыми, и предполагается, что средний разработчик приложений в Jakarta EE либо полагается на прозрачную обработку транзакций с помощью абстракций EJB более высокого уровня, либо использует аннотации, предоставляемые этим API в сочетании с управляемыми компонентами CDI.
- Jakarta Messaging ( JMS ) предоставляет программам Java общий способ создания, отправки, получения и чтения сообщений корпоративной системы обмена сообщениями.
Другие характеристики
- Проверка: этот пакет содержит аннотации и интерфейсы для поддержки декларативной проверки, предлагаемой API проверки компонентов . Проверка компонентов обеспечивает унифицированный способ предоставления ограничений для компонентов (например, классов модели JPA), которые могут применяться на разных уровнях. В Jakarta EE JPA соблюдает ограничения проверки компонентов на уровне персистентности, а JSF — на уровне представления.
- Jakarta Batch предоставляет средства пакетной обработки в приложениях для выполнения длительных фоновых задач, которые могут включать в себя большой объем данных и которые, возможно, придется периодически выполнять.
- Jakarta Connectors — это инструмент на основе Java для соединения серверов приложений и информационных систем предприятия ( EIS ) в рамках интеграции корпоративных приложений ( EAI ). Это низкоуровневый API, предназначенный для поставщиков, с которыми средний разработчик приложений обычно не контактирует.
Веб-профиль
В попытке ограничить занимаемое веб-контейнерами пространство как в физическом, так и в концептуальном плане был создан веб-профиль — подмножество спецификаций Jakarta EE. Веб-профиль Jakarta EE включает в себя следующее:
Сертифицированные среды выполнения ссылок
Хотя по определению все реализации Jakarta EE предоставляют один и тот же базовый уровень технологий (а именно, спецификацию Jakarta EE и связанные API), они могут значительно различаться в отношении дополнительных функций (таких как соединители , кластеризация , отказоустойчивость , высокая доступность , безопасность , и т. д.), установленный размер, объем памяти , время запуска и т. д.
Джакарта, EE [22] [23] [24]
Java EE
Пример кода
Пример кода, показанный ниже, демонстрирует, как различные технологии в Java EE 7 используются вместе для создания веб-формы для редактирования пользователя.
В Jakarta EE (веб-) пользовательский интерфейс можно создать с помощью Jakarta Servlet , Jakarta Server Pages ( JSP ) или Jakarta Faces ( JSF ) с Facelets . В примере ниже используются Faces и Facelets . Явно не показано, что входные компоненты используют API проверки компонентов Jakarta EE Bean под прикрытием для проверки ограничений.
<html xmlns= "http://www.w3.org/1999/xhtml" xmlns:h= "http://xmlns.jcp.org/jsf/html" xmlns:f= "http://xmlns.jcp .org/jsf/core" > <f:metadata> <f:viewParam name= "user_id" value= "#{userEdit.user}" Converter= "#{userConvertor}" /> </f:metadata> <ч:тело> <ч:сообщения /> <h:form> <h:panelGrid columns= "2" > <h:outputLabel for= "firstName" value= "First name" /> <h:inputText id= "firstName" value= "#{userEdit.user. firstName}" label= "Имя" /> <h:outputLabel for= "lastName" value= "LastName" /> <h:inputText id= "lastName" value= "#{userEdit.user.lastName}" label= "Lastname" /> <h:commandButton action= "#{userEdit.saveUser}" value= "Сохранить" /> </h:panelGrid> </h:form> </h:body> </html>
Пример класса Backing Bean
Чтобы облегчить эту точку зрения, Jakarta EE использует концепцию, называемую «Backing Bean». В приведенном ниже примере используются контексты и внедрение зависимостей (CDI) и Jakarta Enterprise Beans ( EJB ).
@Named @ViewScoped публичный класс UserEdit { частный пользователь ; @Inject частный UserDAO userDAO ; общественная строка saveUser () { userDAO . сохранить ( этот пользователь ) ; addFlashMessage ( "Пользователь" + this.user.getId ( ) + " сохранено " ) ; return "users.xhtml?faces-redirect=true" ; } public void setUser ( пользователь пользователя ) { this . пользователь = пользователь ; } общественный пользователь getUser () { вернуть пользователя ; } }
Пример класса объекта доступа к данным
Для реализации бизнес-логики в Jakarta EE используется Jakarta Enterprise Beans ( EJB ). Для фактического сохранения можно использовать JDBC или Jakarta Persistence (JPA). В приведенном ниже примере используются EJB и JPA. Явно не показано, что JTA скрыто используется EJB для управления транзакционным поведением.
@Stateless публичный класс UserDAO { @PersistenceContext частный EntityManagerentityManager ; public void save ( Пользователь- пользователь ) { entityManager . сохраняться ( пользователь ); } общественное недействительное обновление ( пользователь пользователя ) { entityManager . объединить ( пользователь ); } общедоступный список < Пользователь > getAll ( ) { returnententManager . createNamedQuery ( " User.getAll " , User.class ) . ПолучитьСписокРезультатов (); } }
Пример класса сущности
Для определения классов сущностей/моделей Jakarta EE предоставляет Jakarta Persistence ( JPA ), а для выражения ограничений на эти сущности — API проверки компонентов. В приведенном ниже примере используются обе эти технологии.
Пользователь публичного класса @Entity { @Id @GeneratedValue ( стратегия = IDENTITY ) частный целочисленный идентификатор ; @Size ( min = 2 , message = «Имя слишком короткое» ) Private String firstName ; @Size ( min = 2 , message = «Фамилия слишком короткая» ) Private String LastName ; public Integer getId () { возвращаемый идентификатор ; } public void setId ( Целый идентификатор ) { this . идентификатор = идентификатор ; } public String getFirstName () { return firstName ; } public void setFirstName ( String firstName ) { this . ПервоеИмя = ПервоеИмя ; } общественная строка getLastName () { return LastName ; } public void setLastName ( String LastName ) { this . Фамилия = Фамилия ; } }
Смотрите также
Рекомендации
- ^ «Различия между Java EE и Java SE — ваш первый кубок: введение в платформу Java EE». Документы.oracle.com. 01 апреля 2012 г. Проверено 18 июля 2012 г.
- ^ «Обзор Java EE» . Корпорация Оракл . Проверено 26 февраля 2017 г.
- ^ Джон К. Уотерс (12 сентября 2017 г.). «Java EE переходит в Eclipse Foundation». АДТмаг . Проверено 13 сентября 2017 г.
- ^ Битон, Уэйн. «Часто задаваемые вопросы по EE4J | Фонд Eclipse». www.eclipse.org .
- ^ «Обновленная информация о правах Джакарты EE на товарные знаки Java» . 3 мая 2019 г.
- ↑ Чиргвин, Ричард (4 марта 2018 г.). «Java EE переименована в Jakarta EE после размолвки между брендами Big Red» . Программное обеспечение. Регистр . Проверено 19 марта 2018 г.
- ↑ Воган-Николс, Стивен Дж. (5 марта 2018 г.). «Прощай, JEE, здравствуй, Джакарта, EE». Linux и открытый исходный код. ЗДНет . Проверено 10 июля 2020 г.
- ^ «Переход с Java EE на Jakarta EE». blogs.oracle.com .
- ^ План выпуска Jakarta EE Platform 10
- ^ Обрадович, Таня; Гримстад, Ивар (25 мая 2021 г.). «Рабочая группа Jakarta EE выпускает Jakarta EE 9.1, поскольку отрасль продолжает использовать корпоративную Java с открытым исходным кодом». Новости. Джакарта EE . Фонд Эклипс . Проверено 5 марта 2022 г.
- ^ Ммайель, Шабнам; Обрадович, Таня (08.12.2020). «Выпущена Jakarta EE 9!». Новости. Джакарта EE . Фонд Эклипс . Проверено 5 марта 2022 г.
- ^ Ммайель, Шабнам; Обрадович, Таня (10 сентября 2019 г.). «Выпущена Jakarta EE 8!». Новости. Джакарта EE . Фонд Эклипс . Проверено 5 марта 2022 г.
- ↑ Крил, Пол (21 ноября 2003 г.). «Сертифицировано по спецификации J2EE 1.4». Разработка программного обеспечения. Инфомир . Проверено 5 марта 2022 г.
- ↑ Коупленд, Ли (24 сентября 2001 г.). «Sun представляет J2EE 1.3» . Разработка программного обеспечения. Компьютерный мир . Проверено 5 марта 2022 г.
- ^ «JSR 316: Спецификация платформы Java, Enterprise Edition 6 (Java EE 6)» . Процесс сообщества Java . Корпорация Оракл . Проверено 5 марта 2022 г.
- ^ «JSR 342: Спецификация платформы Java, Enterprise Edition 7 (Java EE 7)» . Процесс сообщества Java . Корпорация Оракл . Проверено 5 марта 2022 г.
- ^ «Платформа Java, Enterprise Edition 8 (Java EE 8) Спецификация веб-профиля» (PDF) . Гитхаб . Корпорация Оракл . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 5 февраля 2022 г.
- ^ «Определение веб-профиля» . Веб-профиль Джакарты EE . 8. Джакарта Э.Э. Фонд Эклипс . Проверено 5 марта 2022 г.
- ^ «Определение веб-профиля» . Веб-профиль Джакарты EE . 9. Джакарта Э.Э. Фонд Эклипс . Проверено 5 марта 2022 г.
- ^ «Определение веб-профиля» . Веб-профиль Джакарты EE . 9.1. Джакарта Э.Э. Фонд Эклипс . Проверено 5 марта 2022 г.
- ^ «Определение веб-профиля» . Веб-профиль Джакарты EE . 10. Джакарта Э.Э. Фонд Эклипс . Проверено 27 сентября 2022 г.
- ^ «Продукты, совместимые с Jakarta EE» . Джакарта.ee .
- ^ "Продукты, совместимые с Jakarta EE 9" . Джакарта.ee .
- ^ «Продукты, совместимые с Jakarta EE 8» . Джакарта.ee .
- ^ «Платформа Jakarta EE 10 и MicroProfile 6 в Open Liberty 23.0.0.1-beta» . openliberty.io .
- ^ ab «Поддержка Jakarta EE 10, MicroProfile 6 и Java SE 20 в Open Liberty 23.0.0.3» . openliberty.io .
- ^ "Apache TomEE" . tomee.apache.org . Проверено 08 января 2024 г.
- ^ abcdefg «Совместимость Java EE». www.oracle.com . Проверено 05 августа 2018 г.
- ^ abcdefg «Совместимость Java EE».
- ^ ab «Сравнение версий GlassFish Open Source Edition 2.x и 3.0.x» . Архивировано из оригинала 20 декабря 2012 г.
- ^ «Совместимость Java EE» . Java.sun.com. 07.09.2010 . Проверено 18 июля 2012 г.
- ^ «Сервер Oracle Weblogic 14.1.1» . www.oracle.com .
- ^ «Сервер Oracle Weblogic 12.1.1» . www.oracle.com .
- ^ Лайонс, Уилл; Хамфри, Питер (2011). «Oracle Web Logic Server 12c: разработка современных и легких приложений Java EE 6» (PDF) . Архивировано из оригинала (PDF) 15 декабря 2011 г. Проверено 3 декабря 2011 г.
- ^ «Совместимость Java EE» . www.oracle.com .
- ^ «Выпущен JBoss AS 7.1.0.Final «Thunder» — сертифицирован полный профиль Java EE 6! | Моя вики | Сообщество Planet JBoss» . Planet.jboss.org. 17 февраля 2012 г. Проверено 18 июля 2012 г.
- ^ «Сервер приложений JBoss - Сообщество JBoss» .
- ^ «Сервер приложений JBoss - Сообщество JBoss» .
- ^ «Совместимость Java EE» .
- ^ «JBoss AS теперь сертифицирован EE5!». 15 сентября 2008 г. Архивировано из оригинала 20 сентября 2008 г. Проверено 7 августа 2016 г.
- ^ «Доступность платформы приложений Red Hat JBoss Enterprise 7.2» .
- ^ Business Wire (20 июня 2012 г.). «Red Hat запускает платформу приложений JBoss Enterprise Application Platform 6, чтобы помочь предприятиям перенести разработку и развертывание приложений в облако». Деловой провод . Проверено 18 июля 2012 г.
- ^ «Что нового в WebSphere Application Server V8» . IBM.com . Проверено 18 июля 2012 г.
- ^ ab «IBM WebSphere Application Server Liberty представляет первый готовый к работе сервер приложений, совместимый с Java EE 8, и расширяет поддержку приложений Spring Boot». ИБМ . 10 июля 2018 года . Проверено 12 июля 2018 г.
- ^ «Java EE 7 — Протестированные конфигурации — Профиль Liberty IBM WebSphere Application Server» . Oracle.com .
- ^ «Java EE 7 появилась в WAS Liberty - WASdev» . 25 июня 2015 г.
- ^ «Конфигурации, протестированные веб-профилем IBM Java EE 6» .
- ^ "Apache Geronimo: Индекс" . geronimo.apache.org . 25 января 2010 г.
- ^ «Apache Geronimo полностью сертифицирован для Java EE 6 — The H Open: новости и возможности» . H-online.com. 14 ноября 2011 г. Архивировано из оригинала 20 апреля 2012 года . Проверено 18 июля 2012 г.
- ^ «Протестированные конфигурации, Java EE 6 — TMAX JEUS 7» . Oracle.com. 07.09.2010 . Проверено 18 июля 2012 г.
- ^ «Сервер веб-приложений Java EE6, программное обеспечение WAS» . Us.tmaxsoft.com. Архивировано из оригинала 02 июля 2012 г. Проверено 18 июля 2012 г.
- ^ «Java EE 6 — протестированные конфигурации, Java EE 6 — сервер приложений Hitachi uCosminexus v9.0» . Oracle.com.
- ^ «Сервер приложений Fujitsu Interstage на базе Windows Azure» . Архивировано из оригинала 10 августа 2011 года.
- ^ «Протестированные конфигурации, Java EE6 — Fujitsu Interstage» . Oracle.com. 07.09.2010 . Проверено 18 июля 2012 г.
- ^ «Fujitsu выпускает сервер приложений Interstage V10.1» . Фуджицу.
- ^ «Сертификация сервера приложений NEC WebOTX V9.x» .
- ^ "Apache TomEE" . Openejb.apache.org . Проверено 18 июля 2012 г.
- ^ "MarketWatch.com". MarketWatch.com . Проверено 18 июля 2012 г.
- ^ TomEE, Апач. «Апач ТомEE 7.0.1».
- ^ «Веб-профиль Java EE 6 сервера приложений Resin» (PDF) . caucho.com . 2011. Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «Пожалуйста, приветствуйте Siwpas как сертифицированный вариант Java EE!». Oracle.com . Проверено 7 декабря 2015 г.
- ^ «Выпущен JOnAS 5.3.0 RC1» . jonas.ow2.org . 07.01.2013. Архивировано из оригинала 15 октября 2013 г. Проверено 25 февраля 2014 г.
- ^ «Сертифицирован веб-профиль SAP NetWeaver Cloud Java EE 6! (Аквариум)» .
- ^ «Программные решения SAP — Бизнес-приложения и технологии» .
Внешние ссылки
Викискладе есть медиафайлы по теме Джакарты EE .
- Официальный веб-сайт
- Продукты, совместимые с Jakarta EE: корпоративные Java-приложения и веб-серверы - Eclipse Foundation
- Учебное пособие по Джакарте EE
- Учебное пособие по Первому Кубку Джакарты EE: введение в Jakarta EE
- Платформа Java, Enterprise Edition (Java EE), Oracle Technology Network
- Официальный канал Jakarta EE на YouTube