Программное обеспечение плеера | Ява |
---|---|
Язык(и) программирования | Ява |
Заявка(и) | Сервер приложений |
Статус | Активный |
Лицензия | Eclipse Public License или GNU General Public License с исключением Classpath |
Веб-сайт | jakarta.ee |
Версии платформы Java |
---|
|
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, являются: электронная коммерция , бухгалтерский учет , банковские информационные системы .
Начиная с версии 1.2 платформа была известна как Java 2 Platform, Enterprise Edition или J2EE , пока в версии 1.5 название не было изменено на Java Platform, Enterprise Edition или Java EE .
Java EE поддерживалась Oracle в рамках Java Community Process . 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 .
Версия платформы | Выпуск [9] | Спецификация | Поддержка Java SE | Важные изменения |
---|---|---|---|---|
Джакарта EE 11 | Планируется на июнь/июль 2024 г. | 11 | Ява SE 21 | Данные |
Джакарта EE 10 | 2022-09-22 [10] | 10 |
| Удаление устаревших элементов в Servlet, Faces, CDI и EJB (Entity Beans и Embeddable Container). Время сборки CDI. |
Джакарта EE 9.1 | 2021-05-25 [11] | 9.1 |
| Поддержка JDK11 |
Джакарта EE 9 | 2020-12-08 [12] | 9 | JavaSE8 | Пространство имен API переместить из javax вjakarta |
Джакарта EE 8 | 2019-09-10 [13] | 8 | JavaSE8 | Полная совместимость с Java EE 8 |
JavaEE8 | 2017-08-31 | ДжСР 366 | JavaSE8 | Безопасность на основе HTTP/2 и CDI |
JavaEE7 | 2013-05-28 | СР 342 | Java SE7 | Поддержка WebSocket , JSON и HTML5 |
JavaEE6 | 2009-12-10 | ДжСР 316 | Java SE6 | CDI управляемые Beans и REST |
JavaEE5 | 2006-05-11 | СР 244 | Java SE5 | Аннотации Java и дженерики в Java |
J2EE1.4 | 2003-11-11 | СР 151 | J2SE1.4 | Интероперабельные веб-сервисы WS-I [14] |
J2EE1.3 | 2001-09-24 | 58 ДжСР | J2SE1.3 | Архитектура коннектора Java [15] |
J2EE1.2 | 1999-12-17 | 1.2 | J2SE 1.2 | Первоначальный выпуск спецификации |
Jakarta EE включает в себя несколько спецификаций, которые служат различным целям, таким как создание веб-страниц, чтение и запись в базу данных транзакционным способом, управление распределенными очередями.
API-интерфейсы Jakarta EE включают в себя несколько технологий, расширяющих функциональность базовых API-интерфейсов Java SE , таких как Jakarta Enterprise Beans , коннекторы , сервлеты , Jakarta Server Pages и несколько технологий веб-сервисов .
В попытке ограничить след веб-контейнеров, как в физическом, так и в концептуальном плане, был создан веб-профиль, подмножество спецификаций Jakarta EE. Веб-профиль Jakarta EE включает в себя следующее:
Спецификация | JavaEE6 [16] | JavaEE7 [17] | Java EE 8 [18] Джакарта EE 8 [19] | Джакарта EE 9 [20] Джакарта EE 9,1 [21] | Джакарта EE 10 [22] |
---|---|---|---|---|---|
Сервлет Джакарта | 3.0 | 3.1 | 4.0 | 5.0 | 6.0 |
Страницы сервера Джакарты ( JSP ) | 2.2 | 2.3 | 2.3 | 3.0 | 3.1 |
Джакартский язык выражений ( EL ) | 2.2 | 3.0 | 3.0 | 4.0 | 5.0 |
Поддержка отладки Jakarta для других языков (JSR-45) | 1.0 | 1.0 | 1.0 | 2.0 | 2.0 |
Библиотека стандартных тегов Джакарты ( JSTL ) | 1.2 | 1.2 | 1.2 | 2.0 | 3.0 |
Лица Джакарты | 2.0 | 2.2 | 2.3 | 3.0 | 4.0 |
Джакарта RESTful веб-сервисы ( JAX-RS ) | 1.1 | 2.0 | 2.1 | 3.0 | 3.1 |
Джакарта WebSocket ( WebSocket ) | — | 1.0 | 1.1 | 2.0 | 2.1 |
Обработка JSON в Джакарте ( JSON-P ) | — | 1.0 | 1.1 | 2.0 | 2.1 |
Привязка JSON к Джакарте ( JSON-B ) | — | — | 1.1 | 2.0 | 3.0 |
Джакарта Аннотации ( CA ) | 1.1 | 1.2 | 1.3 | 2.0 | 2.1 |
Jakarta Enterprise Beans ( EJB ) | 3.1 Лайт | 3.2 Лайт | 3.2 Лайт | 4.0 Лайт | 4.0 Лайт |
Джакартские транзакции ( JTA ) | 1.1 | 1.2 | 1.2 | 2.0 | 2.0 |
Джакарта Персистенс ( JPA ) | 2.0 | 2.1 | 2.2 | 3.0 | 3.1 |
Проверка бобов Джакарта | 1.0 | 1.1 | 2.0 | 3.0 | 3.0 |
Jakarta Managed Beans | 1.0 | 1.0 | 1.0 | 2.0 | — |
Джакарта Интерсепторс | 1.1 | 1.2 | 1.2 | 2.0 | 2.1 |
Контексты Джакарты и внедрение зависимостей ( CDI ) | 1.0 | 1.1 | 2.0 | 3.0 | 4.0 |
Внедрение зависимости Джакарта | 1.0 | 1.0 | 1.0 | 2.0 | 2.0 |
Безопасность в Джакарте | — | — | 1.0 | 2.0 | 3.0 |
Аутентификация в Джакарте | — | 1.0 | 1.1 | 2.0 | 3.0 |
Параллелизм Джакарты | — | — | — | — | 3.0 |
Хотя по определению все реализации Jakarta EE предоставляют один и тот же базовый уровень технологий (а именно, спецификацию Jakarta EE и связанные с ней API), они могут значительно различаться по дополнительным функциям (таким как коннекторы , кластеризация , отказоустойчивость , высокая доступность , безопасность и т. д.), установленному размеру, объему памяти , времени запуска и т. д.
Ссылка на среду выполнения [23] [24] [25] | Разработчик | Платформа Джакарта EE 10 | Совместимые продукты с платформой Jakarta EE 9/9.1 | Совместимые продукты с веб-профилем Jakarta EE 9/9.1 | Совместимые продукты с платформой Jakarta EE 8 | Совместимые продукты с веб-профилем Jakarta EE 8 | Лицензирование |
---|---|---|---|---|---|---|---|
GlassFish | Затмение | Да 7.0.0 | Да 6.0.0/ 6.1.0 | Да 6.0.0/ 6.1.0 | Да 5.1.0 | Да 5.1.0 | Бесплатное программное обеспечение |
Открытая свобода | ИБМ | Да 22.0.0.13-бета, [26] 23.0.0.3 [27] | Да 21.0.0.12 | Да 21.0.0.12 | Да 19.0.0.6, 20.0.0.3 | Да 19.0.0.6, 20.0.0.3 | Бесплатное программное обеспечение |
WebSphere Liberty | ИБМ | Да 23.0.0.3 [27] | Да 21.0.0.12 | Да 21.0.0.12 | Да 20.0.0.3 | Да 20.0.0.3 | Собственное программное обеспечение |
WildFly | Красная Шапочка | Да 27.0.0.Альфа5 | Да 23.0.1-Предварительный просмотр/25.0.0-Предварительный просмотр | Да 23.0.1-Предварительный просмотр/25.0.0-Предварительный просмотр | Да 18.0.0 | Да 18.0.0 | Бесплатное программное обеспечение |
JBoss EAP | Красная Шапочка | Нет | Нет | Нет | Да 7.3.0 | Да 7.3.0 | Бесплатное программное обеспечение |
ТомEE | Апачи | Нет | Нет | Да 9.0.0-M7 [28] | Нет | Да 8.0.x | Бесплатное программное обеспечение |
Сервер Пайара | Пайара Сервисез Лимитед | Да 6.2022.1 Альфа 4 | Да 6.2021.1 Альфа 1 | Нет | Да 5.22.0, 5.23.0 | Да 5.23.0 | Бесплатное программное обеспечение |
Сервер приложений Thunisoft | Пекин Thunisoft Информационные Технологии | Нет | Да 3.0 | Нет | Да 2.8 | Нет | Собственное программное обеспечение |
ИИСУС | TmaxSoft | Нет | Нет | Нет | Да 8.5 | Нет | Собственное программное обеспечение |
Сервер приложений InforSuite | Shandong Cvicse Middleware | Нет | Да 11 | Нет | Да 10 | Нет | Собственное программное обеспечение |
Ссылка на среду выполнения | Разработчик | Сертификация 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 с открытым исходным кодом | Оракул | Да v5.0 [29] | Да v5.0 [29] | Да v4.x [30] | Да v4.x [30] | Да v3.x и выше [31] | Да v3.x Веб-профиль | Да v2.1.x [31] | Бесплатное программное обеспечение | |
Сервер Oracle GlassFish | Оракул | Да v3 [32] на основе сервера приложений GlassFish с открытым исходным кодом | Да Сервер приложений Sun Java System v9.0 | Да Сервер приложений Sun Java System v8.2 | Собственное программное обеспечение | |||||
Oracle WebLogic-сервер | Оракул | Да 14.1.1 [33] | Да 12.2.1 [34] | Да v12c [35] | Да v10.3.5.0 | Да, версия 9 | Собственное программное обеспечение | |||
WildFly | Красная Шапочка | Да v14.x [29] | Да v14.x [29] | Да v8.1 [36] | Да v8.0.0.Final | Да v7.1 [37] | Да v6.0 [38] и v7.0 [39] | Да v5.1 [40] [41] | Да v4.x | Бесплатное программное обеспечение |
Платформа корпоративных приложений JBoss | Красная Шапочка | Да v7.2 [42] | Да v7.0 [30] | Да v7.0 [30] | Да v6.0 [43] | Да, версия 5 | Собственное программное обеспечение | |||
Сервер приложений IBM WebSphere | ИБМ | Да v9.x [29] | Да v9.x [30] | Да v8 [44] | Да, версия 7 | Да | Собственное программное обеспечение | |||
Сервер приложений IBM WebSphere Liberty | ИБМ | Да v18.0.0.2 [45] | Да v18.0.0.2 [45] | Да v8.5.5.6 [46] [47] | Да v8.5.5.6 [30] | Да v8.5.5 [48] | Собственное программное обеспечение | |||
Открытая свобода | ИБМ | Да v18.0.0.2 | Да v18.0.0.2 | Бесплатное программное обеспечение | ||||||
IBM WebSphere Application Server Community Edition | ИБМ | Да, версия 3.0 | Да v2.1 | Собственное программное обеспечение | ||||||
Апач Джеронимо | Апачи | Да v3.0-beta-1 [49] [50] | Да, версия 2.0 | Да, версия 1.0 | Бесплатное программное обеспечение | |||||
ИИСУС | TmaxSoft | Да, версия 8 | Да v7 [51] [52] | Да, версия 6 | Да, версия 5 | Собственное программное обеспечение | ||||
Сервер приложений Cosminexus | Хитачи | Да v10.0 [29] | Да v9 [53] | Собственное программное обеспечение | ||||||
Сервер приложений Fujitsu Interstage [54] | Фудзицу | Да v12.0 [29] | Да v1 Azure/v10.1 [55] [56] | Да | Собственное программное обеспечение | |||||
WebOTX | НИК | Да [57] | Да | Собственное программное обеспечение | ||||||
Сервер приложений BES | Баоланде | Да v9.5 [30] | ||||||||
Apache ТомЕЕ [58] [59] | Апачи | Нет 7 (Java EE 7 похож, но не сертифицирован [60] ) | Да | Бесплатное программное обеспечение | ||||||
Сервер смолы | Каучо | Да v4.0 [61] | Да | Собственное программное обеспечение | ||||||
Сивпас | OW2 | Да v6.0 [62] | Бесплатное программное обеспечение | |||||||
JOnAS | OW2 | Да v5.3 rc1 [63] | Да | Да | Бесплатное программное обеспечение | |||||
SAP NetWeaver | САП | Да v2.x [64] | Да | Да | Собственное программное обеспечение | |||||
Контейнеры Oracle для Java EE | Оракул | Да | Собственное программное обеспечение | |||||||
Веб-сервер Oracle iPlanet | Оракул | Да Веб-сервер Sun Java System | Собственное программное обеспечение | |||||||
Сервер приложений Oracle 10g | Оракул | Да | Собственное программное обеспечение | |||||||
Сервер Прамати | Прамати Технологии | Да, версия 5.0 | Собственное программное обеспечение | |||||||
Трифорк Т4 | Трифорк | Да | Собственное программное обеспечение | |||||||
Сервер корпоративных приложений Sybase [65] | Sybase | Да | Собственное программное обеспечение |
Приведенный ниже пример кода демонстрирует, как различные технологии Java EE 7 используются совместно для создания веб-формы для редактирования пользователя.
В Jakarta EE (веб) UI может быть создан с использованием Jakarta Servlet , Jakarta Server Pages ( JSP ) или Jakarta Faces ( JSF ) с Facelets . В примере ниже используются Faces и Facelets . Не показано явно, что компоненты ввода используют API Jakarta EE Bean Validation под капотом для проверки ограничений.
<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:тело> <h:сообщения /> <h:form> <h:panelGrid columns= "2" > <h:outputLabel for= "firstName" value= "Имя" /> <h:inputText id= "firstName" value= "#{userEdit.user.firstName}" label= "Имя" /> <h:outputLabel for= "lastName" value= "Фамилия" /> <h:inputText id= "lastName" value= "#{userEdit.user.lastName}" label= "Фамилия" /> <h:commandButton action= "#{userEdit.saveUser}" value= "Сохранить" /> </h:panelGrid> </h:form> </h:body> </html>
Для облегчения представления Jakarta EE использует концепцию, называемую «Backing Bean». В примере ниже используются Contexts and Dependency Injection (CDI) и Jakarta Enterprise Beans ( EJB ).
@Named @ViewScoped открытый класс UserEdit { частный Пользователь пользователь ; @Inject частный UserDAO userDAO ; public String saveUser ( ) { userDAO.save ( this.user ) ; addFlashMessage ( " Пользователь " + this.user.getId ( ) + " сохранено " ) ; вернуть "users.xhtml?faces-redirect=true" ; } public void setUser ( Пользователь пользователь ) { this.user = пользователь ; } public User getUser () { return user ; } }
Для реализации бизнес-логики Jakarta Enterprise Beans ( EJB ) — это специализированная технология в Jakarta EE. Для фактического сохранения можно использовать JDBC или Jakarta Persistence (JPA). В примере ниже используются EJB и JPA. Не показано явно, что JTA используется под прикрытием EJB для управления транзакционным поведением.
@Stateless публичный класс UserDAO { @PersistenceContext частный EntityManager entityManager ; public void save ( Пользователь пользователь ) { entityManager . persist ( пользователь ); } public void update ( Пользователь пользователь ) { entityManager . merge ( пользователь ); } public List < User > getAll ( ) { return entityManager.createNamedQuery ( " User.getAll " , User.class ) .getResultList ( ) ; } }
Для определения классов сущностей/моделей Jakarta EE предоставляет Jakarta Persistence ( JPA ), а для выражения ограничений на эти сущности — Bean Validation API. В примере ниже используются обе эти технологии.
@Entity открытый класс Пользователь { @Id @GeneratedValue ( strategy = IDENTITY ) частный целочисленный идентификатор ; @Size ( min = 2 , message = "Имя слишком короткое" ) private String firstName ; @Size ( min = 2 , message = "Фамилия слишком короткая" ) private String lastName ; public Integer getId () { return id ; } public void setId ( Integer id ) { this.id = id ; } public String getFirstName () { return firstName ; } public void setFirstName ( String firstName ) { this.firstName = firstName ; } public String getLastName () { return lastName ; } public void setLastName ( String lastName ) { this . lastName = lastName ; } }
{{cite web}}
: |author=
имеет общее название ( помощь )