Jakarta EE , ранее называвшаяся Java Platform, Enterprise Edition ( Java EE ) и Java 2 Platform, Enterprise Edition ( J2EE ), представляет собой набор спецификаций, расширяющих Java SE [1] спецификациями для корпоративных функций, таких как распределенные вычисления и веб-сервисы . [2] Приложения Jakarta EE запускаются в эталонных средах выполнения , которые могут быть микросервисами или серверами приложений , которые обрабатывают транзакции, безопасность, масштабируемость, параллелизм и управление развертываемыми компонентами.
Разработчики) | Фонд Затмения |
---|---|
Программное обеспечение плеера | Ява |
Языки программирования) | Ява |
Приложения) | Сервер приложений |
Статус | Активный |
Лицензия | Общественная лицензия Eclipse или Стандартная общественная лицензия GNU с исключением пути к классам |
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 Foundation была вынуждена изменить название, потому что Oracle владеет торговой маркой для названия «Java» и переименовала платформу Java EE в Jakarta EE. [5] [6] Это название не следует путать с бывшим проектом Jakarta Project, который способствовал развитию ряда текущих и бывших проектов Java в Apache Software Foundation .
- J2EE 1.2 (12 декабря 1999 г.)
- J2EE 1.3 (24 сентября 2001 г.)
- J2EE 1.4 (11 ноября 2003 г.)
- Java EE 5 (11 мая 2006 г.)
- Java EE 6 (10 декабря 2009 г.)
- Java EE 7 (28 мая 2013 г.) [7], но 5 апреля 2013 г. в соответствии со спецификацией. Запланированная дата начала работы - 12 июня 2013 г. [8]
- Java EE 8 (31 августа 2017 г.) [9]
- Jakarta EE 8 (10 сентября 2019 г.) [10] - полностью совместим с Java EE 8
- Jakarta EE 9 (22 ноября 2020 г.) [11] - изменение пространства имен javax. * На jakarta. *.
Характеристики
Jakarta EE включает несколько спецификаций, которые служат различным целям, таким как создание веб-страниц, чтение и запись из базы данных транзакционным способом, управление распределенными очередями.
API-интерфейсы Jakarta EE включают несколько технологий, расширяющих функциональные возможности базовых API-интерфейсов Java SE , таких как Jakarta Enterprise Beans , соединители , сервлеты , серверные страницы Jakarta и несколько технологий веб-сервисов .
Веб-спецификации
- Сервлет Jakarta : определяет, как управлять HTTP-запросами синхронным или асинхронным способом. Это низкий уровень, и другие спецификации Jakarta EE полагаются на него;
- Jakarta WebSocket: спецификация API, определяющая набор API для обслуживания соединений WebSocket ;
- Jakarta Faces : технология построения пользовательских интерфейсов из компонентов;
- Jakarta Expression Language ( EL ) - это простой язык, изначально разработанный для удовлетворения особых потребностей разработчиков веб-приложений. Он используется специально в Jakarta Faces для привязки компонентов к (поддержки) bean-компонентов, а также в Contexts and Dependency Injection к именованным bean-компонентам, но может использоваться во всей платформе.
Спецификации веб-сервисов
- Веб-службы Jakarta RESTful обеспечивают поддержку в создании веб-служб в соответствии с архитектурным шаблоном передачи репрезентативного состояния (REST);
- Jakarta JSON Processing - это набор спецификаций для управления информацией, закодированной в формате JSON;
- Jakarta JSON Binding предоставляет спецификации для преобразования информации JSON в классы Java или из них;
- Связывание Jakarta XML позволяет отображать XML в объекты Java;
- Веб-службы Jakarta XML могут использоваться для создания веб-служб SOAP.
Спецификации предприятия
- 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 общий способ создания, отправки, получения и чтения сообщений корпоративной системы обмена сообщениями.
Прочие характеристики
- Проверка: этот пакет содержит аннотации и интерфейсы для поддержки декларативной проверки, предлагаемой Bean Validation API. Проверка bean-компонентов предоставляет унифицированный способ предоставления ограничений для bean-компонентов (например, классов модели JPA), которые могут применяться на нескольких уровнях. В Jakarta EE JPA учитывает ограничения проверки bean-компонентов на уровне сохраняемости, а JSF - на уровне представления.
- Jakarta Batch предоставляет средства для пакетной обработки в приложениях для выполнения длительных фоновых задач, которые могут включать большой объем данных и которые, возможно, необходимо периодически выполнять.
- Jakarta Connectors - это инструмент на основе Java для подключения серверов приложений и корпоративных информационных систем ( EIS ) в рамках интеграции корпоративных приложений ( EAI ). Это низкоуровневый API, нацеленный на поставщиков, с которыми средний разработчик приложений обычно не контактирует.
Интернет-профиль
В попытке ограничить размер веб-контейнеров, как в физическом, так и в концептуальном плане, был создан веб-профиль, являющийся подмножеством спецификаций Jakarta EE. Веб-профиль Jakarta EE включает следующее:
Технические характеристики | Java EE 6 [12] | Java EE 7 [7] | Java EE 8 [9] Джакарта EE 8 [13] | Джакарта EE 9 [14] |
---|---|---|---|---|
Джакарта сервлет | 3.0 | 3.1 | 4.0 | 5.0 |
Серверные страницы Джакарты ( JSP ) | 2.2 | 2.3 | 2.3 | 3.0 |
Джакартский язык выражений ( EL ) | 2.2 | 3.0 | 3.0 | 4.0 |
Поддержка отладки Джакарты для других языков (JSR-45) | 1.0 | 1.0 | 1.0 | 2.0 |
Стандартная библиотека тегов Джакарты ( JSTL ) | 1.2 | 1.2 | 1.2 | 2.0 |
Джакарта Лица ( JSF ) | 2.0 | 2.2 | 2.3 | 3.0 |
Веб-службы Jakarta RESTful ( JAX-RS ) | 1.1 | 2.0 | 2.1 | 3.0 |
Джакарта WebSocket ( WebSocket ) | N / A | 1.0 | 1.1 | 2.0 |
Джакарта Обработка JSON ( JSON-P ) | N / A | 1.0 | 1.1 | 2.0 |
Связывание Jakarta JSON | N / A | N / A | 1.1 | 2.0 |
Аннотации Джакарты ( JSR 250 ) | 1.1 | 1.2 | 1.3 | 2.0 |
Jakarta Enterprise Beans ( EJB ) | 3.1 Lite | 3.2 Lite | 3.2 Lite | 4.0 Lite |
Сделки в Джакарте ( JTA ) | 1.1 | 1.2 | 1.2 | 2.0 |
Джакарта Постоянство ( JPA ) | 2.0 | 2.1 | 2.2 | 3.0 |
Проверка Jakarta Bean | 1.0 | 1.1 | 2.0 | 3.0 |
Jakarta Managed Beans | 1.0 | 1.0 | 1.0 | 2.0 |
Джакарта Перехватчики | 1.1 | 1.2 | 1.2 | 2.0 |
Jakarta Contexts and Dependency Injection ( CDI ) | 1.0 | 1.1 | 2.0 | 3.0 |
Инъекция зависимости от Джакарты | 1.0 | 1.0 | 1.0 | 2.0 |
Джакарта Безопасность | N / A | N / A | 1.0 | 2.0 |
Джакарта Аутентификация | N / A | 1.0 | 1.1 | 2.0 |
Сертифицированные референтные среды выполнения
Хотя по определению все реализации Jakarta EE предоставляют один и тот же базовый уровень технологий (а именно, спецификацию Jakarta EE и соответствующие API-интерфейсы), они могут значительно отличаться в отношении дополнительных функций (таких как соединители , кластеризация , отказоустойчивость , высокая доступность , безопасность , и т. д.), установленный размер, объем памяти, время запуска и т. д.
Джакарта ЭЭ [15] [16]
Ссылка на время выполнения | Разработчик | Продукты, совместимые с платформой Jakarta EE 9 | Продукты, совместимые с веб-профилем Jakarta EE 9 | Продукты, совместимые с платформой Jakarta EE 8 | Продукты, совместимые с веб-профилем Jakarta EE 8 | Лицензирование |
---|---|---|---|---|---|---|
Стеклянная рыба | Затмение | Да 6.0.0 | Да 6.0.0 | Да 5.1.0 | Да 5.1.0 | Свободное программное обеспечение |
Открытая свобода | IBM | Да 21.0.0.3-бета | Да 21.0.0.2-бета | Есть 19.0.0.6, 20.0.0.3 | Есть 19.0.0.6, 20.0.0.3 | Свободное программное обеспечение |
WildFly | Красная шляпа | Нет | Да 23.0.0 | Да 18.0.0 | Да 18.0.0 | Свободное программное обеспечение |
Сервер Payara | Payara Services Limited | Нет | Нет | Да 5.22.0, 5.23.0 | Да 5.23.0 | Свободное программное обеспечение |
Платформа корпоративных приложений JBoss | Красная шляпа | Нет | Нет | Да 7.3.0 | Да 7.3.0 | Свободное программное обеспечение |
IBM WebSphere Liberty | IBM | Нет | Нет | Да 20.0.0.3 | Да 20.0.0.3 | Проприетарное программное обеспечение |
Сервер приложений Thunisoft | Информационные технологии Пекина Thunisoft | Нет | Нет | Да 2,8 | Нет | Проприетарное программное обеспечение |
ИИСУС | TmaxSoft | Нет | Нет | Да 8,5 | Нет | Проприетарное программное обеспечение |
Сервер приложений InforSuite | ПО промежуточного слоя Shandong Cvicse | Нет | Нет | Да 10 | Нет | Проприетарное программное обеспечение |
Java EE
Ссылка на время выполнения | Разработчик | Сертификация Java EE 8 - Полная | Сертификация Java EE 8 - Интернет | Сертификация Java EE 7 - Полная | Сертификация Java EE 7 - Интернет | Сертификация Java EE 6 - полная официальная страница Oracle о совместимости с Java EE. | Сертификация Java EE 6 - Интернет | Сертифицировано Java EE 5 | J2EE 1.4 сертифицирован | Лицензирование |
---|---|---|---|---|---|---|---|---|---|---|
Сервер GlassFish с открытым исходным кодом | Oracle | Да v5.0 [17] | Да v5.0 [17] | Да v4.x [18] | Да v4.x [18] | Да v3.x и выше [19] | Да v3.x Веб-профиль | Да v2.1.x [19] | Свободное программное обеспечение | |
Сервер Oracle GlassFish | Oracle | Да v3 [20] на основе сервера приложений GlassFish с открытым исходным кодом | Да Сервер приложений Sun Java System v9.0 | Да Сервер приложений Sun Java System v8.2 | Проприетарное программное обеспечение | |||||
Oracle WebLogic Server | Oracle | Да 14.1.1 [21] | Да 12.2.1 [22] | Да, v12c [23] | Да v10.3.5.0 | Да v9 | Проприетарное программное обеспечение | |||
WildFly | Красная шляпа | Да v14.x [17] | Да v14.x [17] | Да v8.1 [24] | Да v8.0.0.Final | Да v7.1 [25] | Да v6.0 [26] и v7.0 [27] | Да v5.1 [28] [29] | Да v4.x | Свободное программное обеспечение |
Платформа корпоративных приложений JBoss | Красная шляпа | Да v7.2 [30] | Да v7.0 [18] | Да v7.0 [18] | Да v6.0 [31] | Да v5 | Проприетарное программное обеспечение | |||
Сервер приложений IBM WebSphere | IBM | Да v9.x [17] | Да v9.x [18] | Да v8 [32] | Да v7 | да | Проприетарное программное обеспечение | |||
IBM WebSphere Application Server Liberty | IBM | Да v18.0.0.2 [33] | Да v18.0.0.2 [33] | Да v8.5.5.6 [34] [35] | Да v8.5.5.6 [18] | Да v8.5.5 [36] | Проприетарное программное обеспечение | |||
Открытая свобода | IBM | Да v18.0.0.2 | Да v18.0.0.2 | Свободное программное обеспечение | ||||||
IBM WebSphere Application Server Community Edition | IBM | Да v3.0 | Да v2.1 | Проприетарное программное обеспечение | ||||||
Apache Geronimo | Apache | Да v3.0-beta-1 [37] [38] | Да v2.0 | Да v1.0 | Свободное программное обеспечение | |||||
ИИСУС | TmaxSoft | Да v8 | Да v7 [39] [40] | Да v6 | Да v5 | Проприетарное программное обеспечение | ||||
Сервер приложений Cosminexus | Hitachi | Да v10.0 [17] | Да v9 [41] | Проприетарное программное обеспечение | ||||||
Сервер межкаскадных приложений Fujitsu [42] | Fujitsu | Да v12.0 [17] | Да v1 Azure / v10.1 [43] [44] | да | Проприетарное программное обеспечение | |||||
WebOTX | NEC | Да [45] | да | Проприетарное программное обеспечение | ||||||
Сервер приложений BES | Баоланда | Да v9.5 [18] | ||||||||
Apache TomEE [46] [47] | Apache | № 7 (Java EE 7 нравится, но не сертифицирован [48] ) | да | Свободное программное обеспечение | ||||||
Смола Сервер | Caucho | Да v4.0 [49] | да | Проприетарное программное обеспечение | ||||||
Siwpas | OW2 | Да v6.0 [50] | Свободное программное обеспечение | |||||||
ЙОНАС | OW2 | Да v5.3 RC1 [51] | да | да | Свободное программное обеспечение | |||||
SAP NetWeaver | SAP | Да v2.x [52] | да | да | Проприетарное программное обеспечение | |||||
Контейнеры Oracle для Java EE | Oracle | да | Проприетарное программное обеспечение | |||||||
Веб-сервер Oracle iPlanet | Oracle | Да Веб-сервер Sun Java System | Проприетарное программное обеспечение | |||||||
Сервер приложений Oracle 10g | Oracle | да | Проприетарное программное обеспечение | |||||||
Прамати Сервер | Pramati Technologies | Да v5.0 | Проприетарное программное обеспечение | |||||||
Трифорк Т4 | Трифорк | да | Проприетарное программное обеспечение | |||||||
Сервер приложений Sybase Enterprise [53] | Sybase | да | Проприетарное программное обеспечение |
Образец кода
Пример кода, показанный ниже, демонстрирует, как различные технологии в Java EE 7 используются вместе для создания веб-формы для редактирования пользователя.
В Jakarta EE (веб-интерфейс) пользовательский интерфейс может быть построен с использованием Jakarta Servlet , Jakarta Server Pages ( JSP ) или Jakarta Server Faces ( JSF ) с Facelets . В приведенном ниже примере используются Faces и Facelets . Явно не показано, что входные компоненты используют Jakarta EE Bean Validation API для проверки ограничений.
xmlns = "http://www.w3.org/1999/xhtml" xmlns: h = "http://xmlns.jcp.org/jsf/html" xmlns: f = "http: //xmlns.jcp .org / jsf / core " > name = "user_id" value = "# {userEdit.user}" converter = "# {userConvertor}" /> /> columns = "2" > for = "firstName" value = "Имя" /> id = "firstName" value = "# {userEdit.user. firstName} " label = " Имя " /> for = "lastName" value = "Last name" /> id = "lastName" value = "# {userEdit.user.lastName}" label = "Фамилия" /> action = "# {userEdit.saveUser}" value = "Сохранить" />