Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

API Java EE

В следующих разделах даётся краткое описание технологий, требуемых платформой Java EE, и API, используемых в приложениях Java EE.

Технология Enterprise JavaBeans

Компонент Enterprise JavaBeans (EJB), или Enterprise-бин, представляет собой совокупность кода, содержащего поля и методы для реализации модулей бизнес-логики. Вы можете думать об Enterprise-бине как о строительном блоке, который можно использовать отдельно или совместно с другими Enterprise-бинами для выполнения бизнес-логики на сервере Java EE.

Понятие Enterprise-бинов включает в себя сессионные компоненты и компоненты, управляемые сообщениями.

  • Сессионный компонент обслуживает врéменное взаимодействие с клиентом. Когда клиент завершает выполнение, сессионный компонент завершает работу и его данные исчезают.

  • Компонент, управляемый сообщениями, сочетает в себе функции сессионного компонента и приёмника сообщений, что позволяет бизнес-компоненту получать сообщения асинхронно. Обычно это сообщения сервиса сообщений Java (JMS).

Платформа Java EE 8 требует Enterprise JavaBeans 3.2 и Interceptors 1.2. Спецификация Interceptors является частью спецификации EJB.

Технология сервлетов Java

Технология Java Servlet позволяет вам создавать специфичные для HTTP классы сервлетов. Класс сервлета расширяет возможности серверов с размещёнными на них приложениями, доступ к которым описывается моделью запрос-ответ. Хотя сервлеты могут отвечать на любые запросы, они обычно используются для расширения приложений, размещаемых на веб-серверах.

Новые функции Java Servlet в платформе Java EE 8:

  • Серверный Push

  • HTTP Trailer

Платформа Java EE 8 требует Servlet 4.0

JavaServer Faces

JavaServer Faces — это набор компонентов пользовательского интерфейса для создания веб-приложений. Основными компонентами JavaServer Faces являются:

  • Набор компонентов GUI.

  • Гибкая модель для отрисовки компонентов в различных видах HTML, на различных языках и технологиях разметки. Объект Renderer генерирует разметку для отрисовки компонента и конвертирует данные из объектной модели к виду, удобному для отображения.

  • Стандартный RenderKit для генерации разметки HTML 4.01.

Следующие функции поддерживают компоненты GUI:

  • Валидация входных данных

  • Обработка событий

  • Преобразование данных между объектной моделью и компонентами

  • Создание управляемой объектной модели

  • Конфигурация навигации по страницам

  • Язык выражений (Expression Language — EL)

Все эти функции доступны в стандартных API Java и XML-файлах конфигурации.

Новые функции JavaServer Faces в платформе Java EE 8:

  • Прямая поддержка веб-сокетов с новым тегом <f:websocket>

  • Валидация бина на уровне класса с новым тегом <f:validateWholeBean>

  • Совместимая с CDI аннотация @ManagedProperty

  • Усовершенствованный набор выражений (EL)

Платформа Java EE 8 требует JavaServer Faces 2.3 и Expression Language 3.0.

Отличное резюме того, что нового появилось в JSF 2.3, см. https://javaserverfaces.github.io/users.html.

Технология JavaServer Pages

Технология JavaServer Pages (JSP) позволяет помещать фрагменты кода сервлета непосредственно в текстовый документ. Страница JSP — это текстовый документ, который содержит два типа текста:

  • Статические данные, которые могут быть выражены в любом текстовом формате, например HTML или XML

  • Элементы JSP, определяющие, как страница генерирует динамический контент

Для получения информации о технологии JSP см. Учебное пособие по Java EE 5 по ссылкеhttp://docs.oracle.com/javaee/5/tutorial/doc/.

Платформа Java EE 8 требует JavaServer Pages 2.3 для совместимости с более ранними выпусками, но в новых приложениях рекомендует использовать Facelets.

Стандартная библиотека тегов JavaServer Pages

Стандартная библиотека тегов JavaServer Pages (JSTL) содержит основные функциональные возможности, общие для многих приложений JSP. Чтобы не смешивать теги от многочисленных производителей ПО в приложениях JSP, используйте один стандартный набор тегов. Эта стандартизация позволяет развёртывать приложения в любом контейнере JSP, поддерживающем JSTL, и даёт гарантию корректной реализации тегов.

JSTL содержит теги итерационных и условных операций, теги управления XML-документами, теги интернационализации, теги доступа к базам данных с использованием SQL и теги других популярных функций.

Платформа Java EE 8 требует JSTL 1.2.

API персистентности Java

Java Persistence API (JPA) — это основанное на стандартах Java решение для персистентности. Персистентность использует объектно-реляционный подход отображения для преодоления разрыва между объектно-ориентированной моделью и реляционной базой данных. Java Persistence API может также использоваться в приложениях Java SE вне среды Java EE. Персистентность в Java состоит из следующих областей:

  • API персистентности Java

  • Язык запросов

  • Метаданные объектно-реляционного отображения

Платформа Java EE 8 требует Java Persistence API 2.2.

API транзакций Java

Java Transaction API (JTA) предоставляет стандартный интерфейс для разграничения транзакций. Архитектура Java EE по умолчанию обеспечивает автоматическую фиксацию и откат транзакций. Автоматическая фиксация предполагает, что любые другие приложения, просматривающие данные, будут видеть обновлённые данные после каждой операции чтения или записи в базу данных. Однако, если ваше приложение выполняет две отдельные операции доступа к базе данных, зависящие друг от друга, вы захотите использовать JTA API, чтобы определить, где полная транзакция, включающая обе эти операции, начинается, откатывается или фиксируется.

Платформа Java EE 8 требует Java Transaction API 1.2.

Java API для RESTful веб-сервисов

The Java API for RESTful Web Services (JAX-RS) определяет API для разработки веб-сервисов, построенных в соответствии с архитектурным стилем REST. Приложение JAX-RS — это веб-приложение, которое состоит из классов, упакованных, как и сервлеты, в WAR-файл вместе с необходимыми библиотеками.

Новые функции RESTful веб-сервисов платформы Java EE 8:

  • Реактивный клиент API

    Когда получены результаты вызова целевого ресурса, усовершенствования в соответствующих API в Java SE позволяют создавать очередь из этих результатов, приоритезировать и комбинировать их, а также обрабатывать возникающие исключительные ситуации.

  • Улучшенная поддержка серверных событий

    Клиенты могут подписаться на уведомления о серверных событиях, используя долгоживущее соединение. Добавлена ​​поддержка нового тип MIME — text/event-stream.

  • Поддержка объектов JSON-B и улучшенная интеграция с технологиями CDI, Servlet и Bean Validation

Платформа Java EE 8 требует JAX-RS 2.1.

Managed-бины (Managed Beans)

Managed-бины, лёгковесные управляемые контейнером объекты (POJO) с минимальными требованиями, поддерживают небольшой набор базовых сервисов, таких как инъецирование ресурсов, Callback-вызовы жизненного цикла и Interceptor-ы. Managed-бины представляют собой обобщение Managed-бинов, описанных в JavaServer Faces, и могут использоваться в любом месте приложения Java EE, а не только в веб-модулях.

Спецификация Managed Beans является частью спецификации платформы Java EE 8 (JSR 366). Платформа Java EE 8 требует Managed Beans 1.0.

Контексты и инъецирование зависимостей в Java EE

Contexts and Dependency Injection for Java EE (CDI) определяет набор контекстных сервисов, предоставляемых контейнерами Java EE, облегчающих разработчикам использование Enterprise-бинов совместно с JavaServer Faces в веб-приложениях. Спроектированный для использования с объектами, сохраняющими состояние, CDI имеет также и более широкое применение, что даёт разработчикам большую гибкость при интегрировании различных видов компонентов слабосвязанными, но типобезопасными (typesafe) способами.

Новые функции CDI в платформе Java EE 8:

  • API для начальной загрузки контейнера CDI в Java SE 8

  • Поддержка порядка, в котором вызываются методы наблюдателя для определённого события, а также поддержка асинхронного запуска событий

  • Интерфейсы конфигураторов, которые используются для динамического назначения и изменения CDI

  • Встроенные литералы аннотаций, удобная функция для создания аннотаций и многое другое

Платформа Java EE 8 требует CDI 2.0.

Инъецирование зависимостей (Dependency Injection) в Java

Инъецирование зависимостей в Java определяет стандартный набор аннотаций (и один интерфейс) для использования в инъецируемых классах.

В платформе Java EE CDI обеспечивает поддержку инъецирования зависимостей. Вообще говоря, точки инъецирования могут использоваться только в приложении с поддержкой CDI.

Платформа Java EE 8 требует Dependency Injection for Java 1.0.

Валидация бинов (Bean Validation)

Спецификация Bean Validation определяет аннотации и API для валидации данных в компонентах JavaBeans. Вместо того, чтобы распределять валидацию данных по нескольким слоям, таким как браузер и серверная сторона, можно задать ограничения валидации в одном месте и использовать эти ограничения валидации несколькими слоями совместно.

Новые функции валидации бинов в платформе Java EE 8:

  • Поддержка новых функций в Java SE 8, таких как API даты и времени

  • Добавлены новые предустановленные ограничения Bean Validation

Платформа Java EE 8 требует Bean Validation 2.0.

API сервиса сообщений (Message Service) Java

API сервиса сообщений Java (JMS) — это стандарт обмена сообщениями, который позволяет компонентам приложения Java EE создавать, отправлять, получать и читать сообщения. Он обеспечивает распределённое, слабосвязное, надёжное и асинхронное взаимодействие.

Платформа Java EE 8 требует JMS 2.0.

Архитектура коннекторов (Connector Architecture) Java EE

Архитектура коннекторов Java EE используется поставщиками инструментальных средств и системными интеграторами для создания адаптеров ресурсов, поддерживающих доступ к корпоративным информационным системам (EIS), которые можно подключить к любому продукту Java EE. Адаптер ресурсов — это программный компонент, который позволяет компонентам приложения Java EE получать доступ и взаимодействовать с базовым менеджером ресурсов EIS. Поскольку адаптер ресурса специфичен для его менеджера ресурсов, для каждого типа базы данных или информационной системы предприятия обычно существует отдельный адаптер ресурсов.

Архитектура коннекторов Java EE также обеспечивает ориентированную на производительность, безопасную, масштабируемую и основанную на сообщениях транзакционную интеграцию веб-сервисов на основе платформы Java EE с существующими EIS, которые могут быть либо синхронными, либо асинхронными. Существующие приложения и EIS, интегрированные через архитектуру коннекторов Java EE в платформу Java EE, могут быть представлены в виде веб-серверов на основе XML с использованием компонентных моделей JAX-WS и Java EE. Таким образом, JAX-WS и архитектура коннекторов Java EE являются дополняющими технологиями для интеграции корпоративных приложений (EAI) и сквозной (end-to-end) бизнес-интеграции.

Платформа Java EE 8 требует Java EE Connector Architecture 1.7.

JavaMail API

Приложения Java EE используют JavaMail API для отправки сообщений по электронной почте. JavaMail API состоит из двух частей:

  • Интерфейс уровня приложения, используемый компонентами приложения для отправки почты

  • Интерфейс поставщика услуг

Платформа Java EE включает в себя JavaMail API с поставщиком сервисов, который позволяет компонентам приложения отправлять почту через Интернет.

Платформа Java EE 8 требует JavaMail 1.6.

Контракт авторизации (Authorization Contract) Java для контейнеров

Спецификация Java Authorization Contract for Containers (JACC) определяет контракт между сервером приложений Java EE и провайдером политик авторизации. Все контейнеры Java EE поддерживают этот контракт.

Спецификация JACC определяет классы java.security.Permission, которые удовлетворяют модели авторизации Java EE. Спецификация определяет привязку решений о предоставлении контейнером доступа к операциям с объектами классов этих разрешений. Он задаёт семантику провайдеров политик, которые используют новые классы разрешений для удовлетворения требований авторизации платформы Java EE, включая определение и использование ролей.

Платформа Java EE 8 требует JACC 1.5.

Интерфейс поставщика сервиса аутентификации Java для контейнеров

Спецификация Java Authentication Service Provider Interface for Containers (JASPIC) определяет интерфейс поставщика услуг (SPI), с помощью которого поставщики аутентификации, которые реализуют механизмы аутентификации сообщений, могут быть интегрированы в контейнеры или среды выполнения сообщений клиента или сервера. Поставщики аутентификации, интегрированные через этот интерфейс, работают с сетевыми сообщениями, которые им передают вызывающие их контейнеры. Поставщики аутентификации преобразуют исходящие сообщения, так что источник каждого сообщения может быть аутентифицирован получающим контейнером, а получатель сообщения может быть аутентифицирован отправителем сообщения. Поставщики аутентификации аутентифицируют каждое входящее сообщение и возвращают вызывающим их контейнерам результат идентификации, установленный в результате аутентификации сообщения.

Платформа Java EE 8 требует JASPIC 1.1.

API безопасности Java EE

Спецификация Java EE Security API определяет переносимые подключаемые интерфейсы для HTTP-аутентификации и хранилищ идентификаторов, а также инъецируемый интерфейс SecurityContext, который обеспечивает API для программной реализации безопасности.

Реализации интерфейса HttpAuthenticationMechanism могут использоваться для аутентификации вызывающих веб-приложение субъектов. Приложение может предоставить свой собственный HttpAuthenticationMechanism или использовать одну из реализаций по умолчанию, предоставляемых контейнером.

Реализации интерфейса IdentityStore можно использовать для проверки учётных данных пользователя и получения информации о группе. Приложение может предоставить собственный IdentityStore или использовать встроенное хранилище LDAP или базы данных.

API HttpAuthenticationMechanism и IdentityStore предоставляют то преимущество перед реализациями, предоставленными контейнером, что они позволяют приложению контролировать процесс аутентификации и хранилища идентификаторов, используемые для аутентификации, стандартным переносимым способом.

API SecurityContext предназначен для использования кодом приложения для взаимодействия с текущим контекстом безопасности. В спецификации также предусмотрено назначение группы ролям по умолчанию и определён основной тип с именем CallerPrincipal, который может представлять результат идентификации вызывающего приложение субъекта.

Платформа Java EE 8 требует Java EE Security API 1.0.

Java API для веб-сокетов (WebSocket)

Веб-сокеты — это прикладной протокол, который обеспечивает полнодуплексный канал связи между двумя узлами по TCP. Java API для веб-сокетов позволяет приложениям Java EE создавать конечные точки, используя аннотации, которые задают параметры конфигурации конечной точки и обозначают методы Callback-вызова жизненного цикла.

Платформа Java EE 8 требует Java API for WebSocket 1.1.

Java API для обработки JSON

JavaScript Object Notation (JSON) — это текстовый формат обмена данными, пришедший из JavaScript и использующийся в веб-сервисах и других связанных приложениях. Java API for JSON Processing (JSON-P) позволяет приложениям Java EE парсинг, преобразование и запрос данных JSON с использованием объектной или потоковой модели.

Новые функции JSON-P в платформе Java EE 8 включают поддержку следующего:

  • JSON Pointer

    Задают строковый синтаксис для ссылки на определённое значение в документе JSON. JSON Pointer включает в себя API для извлечения значений из целевого документа и преобразования их при создании нового документа JSON.

  • JSON Patch

    Определяет формат для выражения последовательности операций, которые будут применены к документу JSON.

  • JSON Merge Patch

    Определяет формат и правила обработки для применения операций к документу JSON основываясь на специфике содержимого целевого документа.

  • В базовый набор функций JSON по обработке документов добавлены новые функции редактирования и преобразования.

  • Вспомогательные классы и методы, называемые JSON Collectors, которые используют возможности Stream API, представленный в Java SE 8.

Платформа Java EE 8 требует JSON-P 1.1.

Java API для связывания с JSON

Java API for JSON Binding (JSON-B) предоставляет слой привязки для преобразования объектов Java в сообщения JSON и обратно. JSON-B также поддерживает возможность настройки процесса маппинга по умолчанию, используемого в этом слое привязки, путём использования аннотаций Java для конкретного поля, свойства JavaBean, типа или пакета или путём реализации стратегии именования свойств.

JSON-B является новым для платформы Java EE 8. Платформа Java EE 8 требует JSON-B 1.0.

Утилиты параллелизма в Java EE

Concurrency Utilities for Java EE — это стандартный API для предоставления асинхронных возможностей компонентам приложений Java EE с помощью следующих типов объектов: управляемого ExecutorService, управляемого ScheduledExecutorService, управляемой фабрики потоков и службы контекста.

Платформе Java EE 8 требуются Concurrency Utilities for Java EE 1.0.

Приложения пакетной обработки для платформы Java

Пакетные задачи — это задачи, которые могут быть выполнены без взаимодействия с пользователем. Спецификация The Batch Applications for the Java Platform — это фреймворк, который обеспечивает поддержку для создания и запуска пакетных заданий в приложениях Java. Фреймворк пакетной обработки состоит из пакетной среды выполнения, языка спецификации задания на основе XML, API Java для взаимодействия с пакетной средой выполнения и API Java для реализации пакетных артефактов.

Платформа Java EE 8 требует Batch Applications for the Java Platform 1.0.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)