Java EE — что это?
Java EE — это платформа, построенная на основе Java SE, которая предоставляет API и среду времени выполнения для разработки и запуска крупномасштабных, многоуровневых, масштабируемых, надежных и безопасных сетевых приложений. Подобные applications называют корпоративными (Enterprise applications), так How они решают проблемы, с которыми сталкиваются большие бизнесы. Однако использовать подобные applications и преимущества, которые дает Java EE, могут не только крупные корпорации и правительственные структуры. Решения, которые предлагает платформа Java EE, полезны, а порой просто необходимы отдельным разработчикам и небольшим организациям.Развитие Java EE
Java EE развивается по процессу Java Community Process (JCP), сформированному в 1998 году. Он позволяет заинтересованным лицам участвовать в формировании будущих версий спецификаций платформ языка Java. Основу данного процесса составляют JSR (Java Specification Request — request на спецификацию Java), формальные documentы, описывающие спецификации и технологии, которые предлагается добавить к Java-платформе. Подобные requestы составляются членами сообщества — простыми разработчиками и компаниями. К числу последних относятся Oracle, Red Hat, IBM, Apache и многие другие. Т.е. ребята предлагают на рассмотрение новые фичи и плюшки, которые они хотели бы включить в Java. А затем проводят голосование, на основании которого принимается решение, что включить в следующую версию. История версий Java EE выглядит так:- J2EE 1.2 (Декабрь 1999)
- J2EE 1.3 (Сентябрь 2001)
- J2EE 1.4 (Ноябрь 2003)
- Java EE 5 (Май 2006)
- Java EE 6 (Декабрь 2009)
- Java EE 7 (Май)
- Java EE 8 (Август 2017)
- Jakarta EE 8 (Сентябрь 2019)
Архитектура Java EE приложений
Небольшое введение. Whatбы облегчить восприятие, давайте поговорим об устройстве Java EE приложений и некоторых терминах, которые мы будем употреблять далее. У Java EE приложений есть структура, которая обладает двумя ключевыми качествами:- во-первых, многоуровневость. Java EE applications — многоуровневые, и об этом мы еще поговорим подробнее;
- во-вторых, вложенность. Есть Java EE server (or server приложений), внутри него располагаются контейнеры компонентов. В данных контейнерах размещаются (бинго!) компоненты.
Уровни приложений
Многоуровневые applications — это applications, которые разделены по функциональному принципу на изолированные модули (уровни, слои). Обычно (в том числе в контексте Java EE разработки) корпоративные applications делят на три уровня:- клиентский;
- средний уровень;
- уровень доступа к данным.
-
Клиентский уровень представляет из себя некоторое приложение, которое запрашивает данные у Java EE serverа (среднего уровня). Сервер, в свою очередь, обрабатывает request клиента и возвращает ему ответ. Клиентским приложением может быть браузер, отдельное приложение (мобильное либо десктопное) or другие serverные applications без графического интерфейса.
-
Средний уровень подразделяется, в свою очередь, на web-уровень и уровень бизнес-логики.
-
Web-уровень состоит из некоторых компонент, которые обеспечивают взаимодействие между клиентами и уровнем бизнес-логики.
На web-уровне используются такие технологии Java EE:
- JavaServer Faces technology (JSF);
- Java Server Pages (JSP);
- Expression Language (EL);
- Servlets;
- Contexts and Dependency Injection for Java EE (CDI).
-
Уровень бизнес-логики состоит из компонент, в которых реализована вся бизнес-логика applications. Бизнес-логика — это code, который обеспечивает функциональность, покрывающую нужды некоторой конкретной бизнес сферы (финансовая индустрия, банковское дело, электронная коммерция). Данный уровень можно считать ядром всей системы.
Технологии, которые задействованы на данном уровне:
- Enterprise JavaBeans (EJB);
- JAX-RS RESTful web services;
- Java Persistence API entities;
- Java Message Service.
-
-
Уровень доступа к данным. Данный уровень иногда называют уровнем корпоративных информационных систем (Enterprise Information Systems, сокращенно —EIS). EIS состоит из различных serverов баз данных, ERP (англ. Enterprise Resource Planning) систем планирования ресурсов предприятия и прочих источников данных. К этому уровню за данными обращается уровень бизнес-логики.
В данном уровне можно встретить такие технологии, How:
- Java Database Connectivity API (JDBC);
- Java Persistence API;
- Java EE Connector Architecture;
- Java Transaction API (JTA).
Сервера приложений, контейнеры, компоненты
Взглянем на определение Java EE из Википедии. Java EE — набор спецификаций и соответствующей documentации для языка Java, описывающий архитектуру serverной платформы для задач средних и крупных предприятий. Whatбы лучше понять, что означает в данном контексте “набор спецификаций”, проведем аналогию с Java-интерфейсом. Сам по себе Java-интерфейс лишен функциональности. Он просто определяет некоторый контракт, согласно которому реализуется некоторая функциональность. А вот реализуют интерфейс уже другие классы. Причем у одного интерфейса допустимы несколько реализаций, каждая из которых может друг от друга отличаться некоторыми деталями. Со спецификацией все точно так же. Голая Java EE — это просто набор спецификаций. Данные спецификации реализуют различные Java EE serverа. Java EE server — это serverное приложение, которое реализует API-интерфейсы платформы Java EE и предоставляет стандартные службы Java EE. Серверы Java EE иногда называют serverами приложений. Данные serverа могут содержать в себе компоненты applications, каждый из которых соответствует своему уровню в многоуровневой иерархии. Сервер Java EE предоставляет этим компонентам различные сервисы в форме контейнера. Контейнеры — это интерфейс между размещенными на них компонентами и низкоуровневыми платформо-независимыми функциональными возможностями, поддерживающими компонент. Контейнеры предоставляют размещенным на них компонентам определенные службы. Например, управление жизненным циклом разработки, внедрение зависимости, параллельный доступ и т. д. Контейнеры скрывают техническую сложность и повышают мобильность. В Java EE существует четыре различные типа контейнеров:-
Контейнеры апплетов выполняются большинством браузеров. При разработке апплетов можно сконцентрироваться на визуальной стороне applications, в то время How контейнер обеспечивает безопасную среду.
-
Контейнер клиентского applications (ACC) включает набор Java-классов, библиотек и других файлов, необходимых для реализации в applicationsх Java SE таких возможностей, How внедрение, управление безопасностью и служба именования.
-
Веб-контейнер предоставляет базовые службы для управления и исполнения веб-компонентов (сервлетов, компонентов EJB Lite, страниц JSP, фильтров, слушателей, страниц JSF и веб-служб). Он отвечает за создание экземпляров, инициализацию и вызов сервлетов, а также поддержку протоколов HTTP и HTTPS. Этот контейнер используется для подачи веб-страниц к клиент-браузерам.
-
EJB (Enterprise Java Bean) контейнер отвечает за управление и исполнение компонентов модели EJB, содержащих уровень бизнес-логики applications. Он создает новые сущности компонентов EJB, управляет их жизненным циклом и обеспечивает реализацию таких сервисов, How транзакция, безопасность, параллельный доступ, распределение, служба именования либо возможность асинхронного вызова.
-
Апплеты — это applications из графического пользовательского интерфейса (GUI), выполняемые в браузере. Они задействуют насыщенный интерфейс Swing API для производства мощных пользовательских интерфейсов.
-
Приложениями называются программы, выполняемые на клиентской стороне. Как правило, они относятся к графическому пользовательскому интерфейсу (GUI) и применяются для пакетной обработки.
-
Веб-applications (состоят из сервлетов и их фильтров, слушателей веб-событий, страниц JSP и JSF) — выполняются в веб-контейнере и отвечают на requestы HTTP от веб-клиентов. Сервлеты также поддерживают конечные точки веб-служб SOAP и RESTful.
-
Корпоративные applications (созданные с помощью технологии Enterprise Java Beans, службы сообщений Java Message Service, интерфейса Java API для транзакций, асинхронных вызовов, службы времени) выполняются в контейнере EJB. Управляемые контейнером компоненты EJB служат для обработки транзакционной бизнес-логики. Доступ к ним может быть How локальным, так и удаленным по протоколу RMI (or HTTP для веб-служб SOAP и RESTful).
Технологии
Итак, с архитектурой разобрались. Общая структура должна быть ясна. В процессе описания компонентов архитектуры мы затронули некоторые технологии Java EE, такие How EJB, JSP и пр. Давайте поближе посмотрим на них. В таблице ниже приведены технологии, которые используются в основном на клиентском уровне:Технология | Наmeaning |
---|---|
Servlets | Java-классы, которые динамически обрабатывают клиентские requestы и формируют ответы (обычно HTML pages). |
Java Server Faces (JSF) | Фреймворк для построения веб приложений с пользовательским интерфейсом. Позволяет включать на page компоненты пользовательского интерфейса (например, поля и кнопки), преобразовывать и валидировать данные компоненты, а также сохранять эти данные в хранorщах на стороне serverа. |
Java Server Faces Facelets technology | Представляет из себя подтип applications JSF, в котором instead of JSP страниц используются XHTML pages |
Java Server Pages (JSP) | Текстовые documentы, которые компorруются в сервлеты. Позволяет добавлять динамический контент на статические pages (например, HTML-pages) |
Java Server Pages Standard Tag Library (JSTL) | Библиотека тегов, в которой инкапсулирована основная функциональность в контексте JSP страниц. |
Expression Language | Набор стандартных тегов, которые используются в JSP и Facelets pageх для доступа к Java EE компонентам. |
Contexts and Dependency Injection for Java EE (CDI) | Представляет собой набор сервисов, предоставляемых Java EE контейнерами, для управления жизненным циклом компонентов, а также внедрения компонентов в клиентские an objectы безопасным способом. |
Java Beans Components | Объекты, которые выступают в роли временного хранorща данных для страниц applications. |
Технология | Наmeaning |
---|---|
Enterprise Java Beans (enterprise bean) components | EJB — это управляемые компоненты, в которых заключена основная функциональность applications. |
JAX-RS RESTful web services | Представляет из себя API для разработки веб-сервисов, соответствующих архитектурному стилю REST. |
JAX-WS web service endpoints | API для создания и использования веб-сервисов SOAP. |
Java Persistence API (JPA) entities | API для доступа к данным в хранorщах данных и преобразования этих данных в an objectы языка программирования Java и наоборот. |
Java EE managed beans | Управляемые компоненты, которые предоставляют бизнес-логику applications, но не требуют транзакционных функций or функций безопасности EJB. |
Java Message Service | API службы сообщений Java (JMS) — это стандарт обмена messagesми, который позволяет компонентам applications Java EE создавать, отправлять, получать и читать messages. What обеспечивает распределенную, надежную и асинхронную связь между компонентами. |
Технология | Наmeaning |
---|---|
The Java Database Connectivity API (JDBC) | Низкоуровневое API для доступа и получения данных из хранorщ данных. Типичное использование JDBC — написание SQL requestов к конкретной базе данных. |
The Java Persistence API | API для доступа к данным в хранorщах данных и преобразования этих данных в an objectы языка программирования Java и наоборот. Гораздо более высокоуровневое API по сравнению с JDBC. Скрывает всю сложность JDBC от разработчика под капотом. |
The Java EE Connector Architecture | API для подключения других корпоративных ресурсов, таких How:
|
The Java Transaction API (JTA) | API для определения и управления транзакциями, включая распределенные транзакции, а также транзакции, затрагивающие множество хранorщ данных. |
GO TO FULL VERSION