Java ee что это
Перейти к содержимому

Java ee что это

  • автор:

Java ee что это

Java EE at a Glance

Java Platform, Enterprise Edition (Java EE) is the standard in community-driven enterprise software. Java EE is developed using the Java Community Process, with contributions from industry experts, commercial and open source organizations, Java User Groups, and countless individuals. Each release integrates new features that align with industry needs, improves application portability, and increases developer productivity.

Today, Java EE offers a rich enterprise software platform and with over 20 compliant Java EE implementations to choose from.

java

A Standardized Development Model for all Java EE Developers

See Also:

What’s New in Java EE 8

Java EE 8 continues to improve API and programming models needed for today’s applications and adds features requested by our world-wide community. This release modernizes support for many industry standards and continues simplification of enterprise ready APIs. Enhancements include:

  • Java Servlet 4.0 API with HTTP/2 support
  • Enhanced JSON support including a new JSON binding API
  • A new REST Reactive Client API
  • Asynchronous CDI Events
  • A new portable Security API
  • Server-Sent Events support (Client & Server-side)
  • Support for Java SE 8 new capabilities (e.g. Date & Time API, Streams API, annotations enhancements)

Java EE 8 builds on Java EE 7. The following JSRs are new or updated in Java EE 8:

Everything You Need to Know About Getting Started with Java EE

Java is a pretty complicated topic, and it’s even more confusing for a newbie who is just starting to learn about these things. Add industry jargon such as Java SE, Core Java, J2SE, JAX, MVC and you’ve got a recipe for disaster. In this article, we’ll try to simplify the important concepts to help you actually get started with the Java Enterprise Edition (JEE).

For an absolute newbie, one thing you need to understand is that Java Programming Language and Java Platform are two different things. Java Platforms such as Java Standard Edition or Java Enterprise Edition (we’ll get to these in a bit) use Java programming language. The language is the coding that is used to write programs, but the platforms are used to actually build the programs and deploy them. This is one of the main distinctions that you need to remember.

Java SE vs Java EE

Here, we aren’t going to focus on the language, but instead on the platform. There are two different types of platforms — Java SE (Standard Edition) and Java EE (Enterprise Edition). The Java SE is a basic platform that offers a range of general-purpose APIs such as Java API for the Java Class Library. These can be used to build applications and programs on the Java platform.

On the other hand, the Java EE platform is designed for companies and corporations that require a large scalable distributed system for building bulk apps. It includes additional libraries for database access (JDBC, JPA), remote method invocation (RMI), messaging (JMS), web services, XML processing, and defines standard APIs for Enterprise JavaBeans, servlets, portlets, Java Server Pages, etc.

Java Enterprise Edition

Previously known as Java 2 Platform, Enterprise Edition or J2EE, Java EE was built by Sun Microsystems in collaboration with IBM. It was originally created to simplify application development and reduce the amount of code writing by creating standard modules and components that can automate processes.

The main objective of Java EE is to simplify common problems faced by developers when it comes to building modern applications through different APIs. Some prominent APIs that come with Java EE includes Servlet, JavaServer Pages (JSP), Java Persistence API (JPA), Enterprise JavaBeans (EJB), JSP Standard Tag Library (JSTL), Java EE containers, etc.

Learning Java EE

With so much confusion surrounding this topic, learning it becomes another issue altogether. There are complete courses and tutorials that are dedicated to helping you learn this platform. However, most of them simply focus on understanding the theory. This becomes a problem later on as students finish the course and they become stuck.

To counter this problem, Eduonix has an immersive course that includes theory, practical applications, and even hands-on projects. The Projects in Enterprise Java Tutorial includes not only the theory of what is Java EE and it’s different components but you’ll also see live examples on how to use it and you’ll also build 5 projects of your own! This ensures that once the course is over, you will be able to build your own projects on the Java Platform.

Java EE (Enterprise Edition)

Клиент — приложение, использующее объекты сервера с помощью создания запросов.

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

Сервер — приложение, обрабатывающее запросы клиента и возвращающее ответ.

Модульное программирование — это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам. [source]

Модуль — функционально законченный фрагмент программы. [source]

  • Java предусматривает объединение модулей в пакеты.

Платформа — в общем смысле, это любая существующая среда выполнения, в которой должен выполняться вновь разрабатываемый фрагмент программного обеспечения или объектный модуль с учётом накладываемых этой средой ограничений и предоставляемых возможностей. [source]

Компонент — это автономная функциональная программная единица, которая собирается в JEE приложение в связке с классами и файлами, и затем обменивается данными с другими компонентами. [source]

  • JEE спецификация определяет следующие разновидности JEE компонентов:
    • Клиентские приложения и апплеты — клиент-компоненты, запускаются на клиенте.
    • Servlet, JSF, JSP компоненты — веб-компоненты, запускаются на сервере.
    • EJB (EB) компоненты — бизнес-компоненты, запускаются на сервере.

    EJB (Enterprise JavaBeans) — спецификация технологии написания и поддержки серверных компонентов, содержащих бизнес-логику. [source]

    • EJB применяется, когда необходимо:
      • Поддержка сохранности данных (persistence); данные должны быть в сохранности даже после остановки программы, чаще всего достигается с помощью использования базы данных.
      • Поддержка распределённых транзакций.
      • Поддержка параллельного изменения данных и многопоточность.
      • Поддержка событий.
      • Поддержка именования и каталогов (JNDI).
      • Безопасность и ограничение доступа к данным.
      • Поддержка автоматизированной установки на сервер приложений.
      • Удалённый доступ.

      ERP (Enterprise Resource Planning) — метод эффективного использования человеческих ресурсов, программного и технического обеспечения для увеличения продуктивности и прибыли, что упрощает бизнес решения компании. Проще говоря, ERP решение позволяет каждому отделу или бизнес сфере управляться централизованно, при этом работать отдельно друг от друга. [source]

      • ERP может включать в себя множественные приложения или один програмнный пакет, который аккуратно распространяет данные, необходимые для нескольких бизнес отделов компании.
      • ERP может содержать множество различных бизнес моделей, включая: производство, платежную ведомость, продажи, реестр, партнеров, финансы и бухгалтерию, CRM (Customer Relationship Management).

      TP (Transaction Processing) — процесс завершения задачи и/или пользовательского/программного запроса мгновенно или в рантайме. Это набор различных взаимосвязанных задач и процессов, которые должны работать синхронно, чтобы завершить процесс транзакции. [source]

      • TP относится к любой real-time транзакции или процессу, представленному TPS.

      TPS (Transaction Processing System) или Transaction Server — система программного обеспечения или комбинация технического/программного обеспечения, которая поддерживает транзакционные технологии. [source]

      • Когда TPS получает запрос, то она согласовывается с соотвествующей системой для авторизации, для зароса данных или какого-нибудь определенного задания для завершения транзакции.
      • Например, когда сделан запрос на выдачу материальных средств в банкомате, он сперва авторизирует пользователя согласно его данным из карточки и сохраняет запрос/статус в банковской системе. Когда информация получена, банкомат преобразует пользовательский запрос в транзакцию. Кроме того, TPS может принять, отклонить или прекратить транзакцию, в зависимости от переменных среды.

      API (Application Programming Interface) — это программа, которая производит взаимодействие с другими программами. Например, она позволяет программисту взаимодействовать с приложением, используя набор доступных этим API функций. [source]

      • API является корректно построенным, если при его расширении не произойдет сбоев в программах, которые зависят от него.
      • API может быть языково- зависимым и независимым.
      • В контексте Java, API может быть:
        • official — Java Core API, который включен в JDK.
        • optional — Java APIs, которые могут быть загружены с официальных источников.
        • unofficial — Java APIs, которые являются сторонними APIs и могут быть загружены с различных сайтов.

        Framework — программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.

        JCP (Java Community Process) — формальный процесс, который позволяет заинтересованным лицам участвовать в формировании будущих версий спецификаций платформ языка Java.

        JSR (Java Specification Request) — формальные документы, описывающие спецификации и технологии, которые предлагается добавить к Java платформе.

        • Шаги разработки JSR: запрос > черновик для сообщества > открытый черновик > поддержка.

        2. Многослойная Архитектура

        Многослойная архитектура — клиент-серверная архитектура, в которой представление, логика и управление данными разделены. Самая распространенная многослойная архитектура — трехслойная. [source]

        Трехслойная архитектура — клиент-серверная архитектура, в которой пользовательский интерфейс, логика и управление данными разрабатываются и поддерживаются, как независимые модули, чаще всего на раздельных платформах. [source]

        Client Tier — данный слой состоит из клиентов, которые обращаются к серверу и находятся на различных с ним машинах. [source]

        Web Tier — данный слой состоит из компонентов, которые управляют взаимодействием между клиент и бизнес слоями. [source]

        • Главные задачи веб-слоя:
          • Динамическая генерация контента для клиента.
          • Сбор входных данных от пользователей клиентского интерфейса и возврат соответствующих результатов из компонентов бизнес-слоя.
          • Контролировать отображение страниц клиента.
          • Регулировать состояние данных во время текущей сессии пользователя.
          • Представлять некоторую базовую логику и временно хранить некоторые данные в управляющих бинах.

          Business Tier — данный слой состоит из компонентов, которые предоставляют бизнес логику приложению. [source]

          • Бизнес логика — это код, который предоставляет функциональность определенным доменам, таким как: финансовая индустрия или e-commerce сайт.
          • Список самых главных JEE технологий, которые используются в бизнес-слое в JEE приложениях: EJB (EB) компоненты, JAX-RS RESTful веб сервисы, JPA сущности.

          EIS (Enterprise Information System) Tier — данный слой состоит из серверов баз данных, ERP систем и других существующих источников данных по типу мейнфреймов. [source]

          • Эти ресурсы обычно находятся отдельно от JEE сервера, и к ним обращаются через компоненты бизнес-слоя.
          • Список самых главных JEE технологий, которые используются в EIS-слое в JEE приложениях: JDBC API, JPA, JCA, JTA.

          Пример приложения с многослойной архитектурой:

          example

          3. Clients

          Web Clients — разделяются на две части: [source]

          • Динамические веб страницы, содержащие различного рода языки разметки, которые генерируются веб компонентами, запускаемыми из веб-слоя.
          • Веб браузер, который формирует вид страниц, поучаемых от сервера.

          Application Clients — запускаются на машине клиента и позволяют пользователям выполнять задачи, для которых необходим достаточно функциональный пользовательский интерфейс, который не может предоставить язык разметки. [source]

          • Клиентские приложения напрямую имеют доступ к EBs из бизнес-слоя. Однако если требования приложения предусматривают такую возможность, то клиент может открыть HTTP соединение, чтобы установить соединение с сервлетом из веб-слоя.

          Applets — веб страница, получаемая из веб-слоя может включать в себя встроенный апплет. Написанный на Java апплет — это малое клиентское приложение, которое работает с JVM, встроенной в браузер. [source]

          JBs Component Architecture. Сервер- и клиент-слои могут включать в себя компоненты, основанные на архитектуре JBs компонентов, чтобы управлять потоком данных между: [source]

          • Клиентским приложением или апплетом и компонентами, запускаемыми на JEE сервере.
          • Серверными компонентами и базой данных.

          JEE Server Communications. Клиент связывается с бизнес-слоем, запускаемым на JEE сервере напрямую, либо через веб страницы или через сервлеты из веб-слоя. [source]

          • Диграмма элементов, которые могут составлять клиент-слой:

          diagram

          4. Containers

          Server — серверное приложение, реализующее JEE APIs и предоставляющее стандартные JEE сервисы.

          • JEE серверы позволяют снабжать пользователя данными приложения, также как и веб серверы снабжают веб-страницы браузерам.

          Container — интерфейс между компонентом и низкоуровневой функциональностью, предоставляемой платформой для поддержки этого компонента. Каждый из компонентов играет свою специфическую роль, поддерживает набор интерфейсов API и предлагает компонентам сервисы. [source]

          • Контейнеры скрывают техническую сложность и повышают мобильность.
          • При разработке приложений каждого типа необходимо учитывать возможности и ограничения каждого контейнера, чтобы знать, использовать один или несколько. Например, для разработки веб-приложения необходимо сначала разработать уровень фреймворка JSF и уровень EJB Lite, a затем развернуть их в веб-контейнер.

          Web Container предоставляет базовые сервисы для управления и исполнения веб-компонентов (сервлетов, компонентов EJB Lite, страниц JSP, фильтров, слушателей, страниц JSF и веб-сервисов). Он отвечает за создание экземпляров, инициализацию и вызов сервлетов, а также поддержку протоколов HTTP и HTTPS. Этот контейнер используется для подачи веб-страниц к клиент-браузерам. [source]

          • Веб-контейнер — интерфейс между веб-компонентами и веб сервером.
          • Веб-компонент может быть сервлетом или JSF страницей.
          • Контейнер управляет жизненным циклом компонента, посылает запросы компонентам приложения и предоставляет интерфейсы контекстным данным, например, информацию о текущем запросе.

          EJB Container отвечает за управление и исполнение компонентов модели EJB (компонент-сеансы EJB и компоненты, управляемые сообщениями), содержащих уровень бизнес-логики вашего приложения на Java EE. Он создает новые сущности компонентов EJB, управляет их жизненным циклом и обеспечивает реализацию таких сервисов, как транзакция, безопасность, параллельный доступ, распределение, служба именования либо возможность асинхронного вызова. [source]

          • EJB-контейнер — интерфейс между EBs, которые предоставляют бизнес логику JEE приложению, и JEE сервером.
          • EJB-контейнер запускается на JEE сервере и управляет выполнением EBs приложения.

          Application Client Container включает набор Java-классов, библиотек и других файлов, необходимых для реализации в приложениях Java SE таких возможностей, как внедрение, управление безопасностью и служба именования (в частности, Swing, пакетная обработка либо просто класс с методом main() ). Контейнер ACC обращается к EJB-контейнеру, используя протокол RMI-IIOP, а к веб-контейнеру — по протоколу HTTP (например, для веб-служб). [source]

          • АС-контейнер — интерфейс между клиентами JEE приложения (JSE приложения, которые используют JEE серверные компоненты).
          • AC-контейнер запускается на клиентской машине и является шлюзом между клиентским приложением и JEE серверными компонентами, которые использует клиент.

          Диаграмма связей между контейнерами. diagram

          5. JEE Specification APIs

          JEE (Java Enterprise Edidtion) — набор спецификаций и соответствующей документации, описывающей архитектуру серверной платформы для задач средних и крупных предприятий.

          • JEE — это обобщающая спецификация, которая объединяет и интегрирует остальные.

          WP (Web Profile) — веб-профиль JEE платформы, предназначенный в основном для веб-приложений следующего поколения.

          MB (Managed Beans) — легковесные управляемые контейнером POJOs с минимальными требованиями. Поддерживают небольшой набор базовых сервисов, таких как внедрение, callbacks, перехватчики. [source]

          • Представляют собой обобщение MBs из JSF технологии и могут быть использованы где угодно в JEE приложении, а не только в веб модулях.

          6. Web Service Specification APIs

          WS (Web Services) — JEE поддерживает SOAP и RESTful веб-сервисы.

          • Интерфейс Java для веб-сервисов на XML (JAX-WS), сменивший интерфейс с поддержкой вызовов удаленных процедур на основе XML (JAX-RPC), обеспечивает работу веб-служб, работающих по протоколу SOAP/HTTP.
          • Интерфейс для веб-сервисов RESTful (JAX-RS) поддерживает веб-службы, использующие стиль REST.

          WS (Web Services) Metadata — спецификация, направленная на стандартизацию разработки интерфейсов веб-сервисов для JEE платформы. Она определяет синтаксис и семантику метаданных веб-сервисов, но не определяет среду рантайма или контейнера.

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

          JAX-RS (Java API for RESRful Web Services) — спецификация определяет APIs для разработки веб сервисов, постороенных согласно REST стилю. [source]

          • JAX-RS приложение — веб-приложение, которое состоит из классов, упакованных как сервлеты в WAR файл вместе с необходимыми библиотеками.

          JSON-P (JSON Processing) — появившийся только в JEE 7 Java-интерфейс для обработки JSON (JSON-P), позволяет приложениям синтаксически анализировать, генерировать, трансформировать и запрашивать JSON. [source]

          7. Web Specification APIs

          Servlet — является интерфейсом, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Классы сервлетов наследуют возможности серверов, которые хостят приложение, доступное через программную модель "запрос-ответ". [source]

          • Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов.

          JSF (JavaServer Faces) — фреймворк пользовательского интерфейса, для создания веб-приложений. [source]

          • Главные компоненты JSF:
            • GUI фреймворк
            • Гибкая модель отображения компонентов в различных видах HTML или в других языках разметок и технологий.
            • Стандарт RenderKit для генерации HTML 4.01 разметки.

            JSP (JavaServer Pages) — технология, позволяющая веб-разработчикам создавать содержимое, которое имеет как статические, так и динамические компоненты. Страница JSP содержит текст двух типов: статические исходные данные, которые могут быть оформлены в одном из текстовых форматов HTML, SVG, WML, или XML, и JSP-элементы, которые конструируют динамическое содержимое. [source]

            • Код JSP-страницы транслируется в Java-код сервлета с помощью компилятора JSP-страниц Jasper, и затем компилируется в байт-код JVM.

            JSTL (JSP Standard Tag Library) — стандартная библиотека тегов JSP. Является расширением спецификации JSP, добавляющее библиотеку JSP тегов для общих нужд, таких как разбор XML данных, условная обработка, создание циклов и поддержка интернационализации. [source]

            • JSTL является альтернативой такому виду встроенной в JSP логики, как скриплеты, то есть прямые вставки Java кода.

            WebSocket — протокол приложения, предоставляющий двусторонние связи между двумя пирами (peers) через TCP. Он позволяет JEE приложением создавать конечные точки (endpoints), используя аннотации, которые указывают конфигурацию параметров точки, и указывают callback методы. [source]

            EL (Expression Language) — скриптовый язык выражений, который позволяет получить доступ к JBs из JSP. [source]

            8. Enterprise Specification APIs

            EJB (Enterprise JavaBeans) — спецификация технологии написания и поддержки серверных компонентов, содержащих бизнес-логику. [source]

            • EJB применяется, когда необходимо:
              • Поддержка сохранности данных (persistence); данные должны быть в сохранности даже после остановки программы, чаще всего достигается с помощью использования базы данных.
              • Поддержка распределённых транзакций.
              • Поддержка параллельного изменения данных и многопоточность.
              • Поддержка событий.
              • Поддержка именования и каталогов (JNDI).
              • Безопасность и ограничение доступа к данным.
              • Поддержка автоматизированной установки на сервер приложений.
              • Удалённый доступ.

              JavaMail. Многим приложениям требуется функция отправки сообщений электронной почты, которая может быть реализована благодаря этому интерфейсу. [source]

              • JavaMail API разделяется на 2 части:
                • Интерфейс уровня приложения, используемый компонентами приложения для отправки сообщений электронной почты.
                • Интерфейс сервис провайдера.

                JCA (Java Connector Architecture) — коннекторы позволяют получить доступ к корпоративным информационным системам (EIS) с компонента JEE. К таким компонентам относятся базы данных, мейнфреймы, либо программы для планирования и управления ресурсами предприятия (ERP). [source]

                • Существующие приложения и EISs, интегрированные в JEE платформу через JCA, могут восприниматься как XML-based веб сервисы из-за использования JAX-WS и JEE компонентных моделей.

                JPA (Java Persistence) — стандартный интерфейс для объектно-реляционного отображения (ORM). С помощью встроенного языка запросов JPQL вы можете обращаться к объектам, хранящимся в основной базе данных. [source]

                • JP используется объектно-реляционное отображение для устранения пробела между объектно-ориентированной моделью и реляционной базой данных.
                • JP содержит следущие сервисы: JPA (Java Persistence API), QL (Query Language), метаданные для объектно-реляционного отображения.

                JTA (Java Transaction API) — этот сервис предлагает интерфейс разграничения транзакций, используемый контейнером и приложением. Он также предоставляет интерфейс между диспетчером транзакций и диспетчером ресурсов на уровне интерфейса драйвера службы. [source]

                JMS (Java Message Service) — интерфейс для доступа к службам сообщений. Позволяет компонентам асинхронно обмениваться данными через сообщения. Он поддерживает надежный обмен сообщениями по принципу «от точки к точке» (P2P), а также модель публикации-подписки (pub-sub). [source]

                9. Прочие APIs

                JACC (Java Authorization Contract for Containers) — определяет соглашение о взаимодействии между сервером приложений Java EE и поставщиком сервиса авторизации, позволяя, таким образом, сторонним поставщикам такого сервиса подключаться к любому продукту JEE. [source]

                Bean Validation — данная спецификация определяет модель метаданных и API для валидаци данных в JBs компонентах. Вместо того, чтобы распространять валидацию данных на несколько слоев (браузер, сервер и т.д.), эта спецификация позволяет определить контейнеры валидации в одном месте и распределять их по разным слоям. [source]

                CDI — определяет набор контекстно-зависимых сервисов, предоставляемых JEE контейнерами, которые облегчают разработчкам использование EJBs вместе с JSF в веб приложениях. [source]

                DI — процесс предоставления внешней зависимости программному компоненту. Является специфичной формой "инверсии управления", когда она применяется к управлению зависимостями. [source]

                Batch — пакетный фреймворк, который предоставляет поодержку для создания и запуска пакетных служб в приложении. Пакетные службы — это такие задачи, которые могут выполняться без участия пользователя. [source]

                Concurrency Utilities — API, предоставляющее асинхронные возможности для компонентов JEE приложения через указанные типы объектов: управляемый исполнительный сервис, управляемый планированный исполнительный сервис, управляемая фабрика потоков и контекстный сервис. [source]

                Management — JEE с помощью специального управляющего компонента определяет API для операций с контейнерами и серверами.

                JASPIC (Java Authentication Service Provider Interface for Containers) — определяет стандартный интерфейс, с помощью которого модули аутентификации могут быть интегрированы с контейнерами. В результате модули могут установить идентификаторы подлинности, используемые контейнерами. [source]

                10. JSE APIs

                Common Annotations — аннотации предоставляют возможность декларативного программирования в Java платформе. [source]

                JDBC (Java Database Connectivity) — API для возможности соединения с реляционными базами данных. [source]

                • JDBC API содержит два основных типа интерфейсов: первый — для разработчиков приложений и второй (более низкого уровня) — для разработчиков драйверов.
                • JDBC основан на концепции так называемых драйверов, позволяющих получать соединение с базой данных по специально описанному URL.

                JNDI (Java Naming and Directory Interface) — API, организованный в виде службы каталогов, который позволяет Java-клиентам открывать и просматривать данные и объекты по их именам. [source]

                JAXP (Java API for XML Processing) — набор абстрактных API, упрощающих обработку XML данных с помощью программ, написанных на Java. Усиливает стандартные анализаторы SAX (Simple API for XML Parsing) и DOM (Document Object Model). [source]

                JAXB (Java Architecture for XML Binding) — позволяет связывать классы и XML представления. Предоставляет две основные возможности: маршаллирование Java объектов в XML и наоборот, то есть демаршализация из XML обратно в Java объект. Другими словами, JAXB позволяет хранить и извлекать данные в памяти в любом XML-формате, без необходимости выполнения определенного набора процедур загрузки и сохранения XML. [source]

                JAX-WS (Java API for Web Services) — спецификация определяет APIs для разработки веб сервисов. Является заменой технологии JAX-RPC, предоставляя более документо-ориентированную модель сообщений и упрощая разработку веб-служб за счёт использования аннотаций. [source]

                • Использование аннотаций устраняет необходимость создания дескрипторов веб-служб. Декларация конечных точек (endpoints) происходит непосредственно в классах Java.
                • Прямая интеграция с JAXB 2.0.
                • Внедрение ресурсов (Resource injection).
                • Поддержка MTOM.
                • Возможность выбора между двумя путями разработки: снизу-вверх (программист разрабатывает endpoint-классы сам) и сверху-вниз (Java классы генерируются по WSDL).

                JAF (JavaBeans Activation Framework) — предоставляет фреймворк для управления данными в различных MIME типах. Используется в JavaMail API. [source]

                StAX (Streaming API for XML) — предоставляет API для парсинга XML.

                JAAS (Java Authentication and Authorization Service) — API отделяет аутентификацию и авторизацию пользователей от основной программы, чтобы управлять ими независимо от программы. [source]

                JMX (Java Management Extensions) — технология, предназначенная для контроля и управления приложениями, системными объектами, устройствами и компьютерными сетями. Данные ресурсы представляются через MBs.

                SAAJ (SOAP with Attachments API for Java) — низкоуровневый API, от которого зависит JAX-WS. [source]

                Введение в Java EE

                Введение в Java EE - 1

                Сегодня поговорим о том, что это такое — Java EE: из чего состоит, каковы особенности архитектуры Java EE приложений, и приведем описания различных технологий данной платформы. Тема обширная сама по себе, но на азах мы не остановимся. В конце проведем небольшое сравнение Java EE со Spring Framework и ответим на вопрос: “что лучше учить” (спойлер: конечно же, учить нужно всё =) ) Начнем с основ.

                Java EE — что это?

                Развитие 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 приложений

                • во-первых, многоуровневость. Java EE приложения — многоуровневые, и об этом мы еще поговорим подробнее;
                • во-вторых, вложенность. Есть Java EE сервер (или сервер приложений), внутри него располагаются контейнеры компонентов. В данных контейнерах размещаются (бинго!) компоненты.

                Уровни приложений

                • клиентский;
                • средний уровень;
                • уровень доступа к данным.

                Клиентский уровень представляет из себя некоторое приложение, которое запрашивает данные у Java EE сервера (среднего уровня). Сервер, в свою очередь, обрабатывает запрос клиента и возвращает ему ответ. Клиентским приложением может быть браузер, отдельное приложение (мобильное либо десктопное) или другие серверные приложения без графического интерфейса.

                Средний уровень подразделяется, в свою очередь, на 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).

                Уровень бизнес-логики состоит из компонент, в которых реализована вся бизнес-логика приложения. Бизнес-логика — это код, который обеспечивает функциональность, покрывающую нужды некоторой конкретной бизнес сферы (финансовая индустрия, банковское дело, электронная коммерция). Данный уровень можно считать ядром всей системы.

                Технологии, которые задействованы на данном уровне:

                • Enterprise JavaBeans (EJB);
                • JAX-RS RESTful web services;
                • Java Persistence API entities;
                • Java Message Service.

                Уровень доступа к данным. Данный уровень иногда называют уровнем корпоративных информационных систем (Enterprise Information Systems, сокращенно —EIS). EIS состоит из различных серверов баз данных, ERP (англ. Enterprise Resource Planning) систем планирования ресурсов предприятия и прочих источников данных. К этому уровню за данными обращается уровень бизнес-логики.

                В данном уровне можно встретить такие технологии, как:

                • Java Database Connectivity API (JDBC);
                • Java Persistence API;
                • Java EE Connector Architecture;
                • Java Transaction API (JTA).

                Сервера приложений, контейнеры, компоненты

                Контейнеры апплетов выполняются большинством браузеров. При разработке апплетов можно сконцентрироваться на визуальной стороне приложения, в то время как контейнер обеспечивает безопасную среду.

                Контейнер клиентского приложения (ACC) включает набор Java-классов, библиотек и других файлов, необходимых для реализации в приложениях Java SE таких возможностей, как внедрение, управление безопасностью и служба именования.

                Веб-контейнер предоставляет базовые службы для управления и исполнения веб-компонентов (сервлетов, компонентов EJB Lite, страниц JSP, фильтров, слушателей, страниц JSF и веб-служб). Он отвечает за создание экземпляров, инициализацию и вызов сервлетов, а также поддержку протоколов HTTP и HTTPS. Этот контейнер используется для подачи веб-страниц к клиент-браузерам.

                EJB (Enterprise Java Bean) контейнер отвечает за управление и исполнение компонентов модели EJB, содержащих уровень бизнес-логики приложения. Он создает новые сущности компонентов EJB, управляет их жизненным циклом и обеспечивает реализацию таких сервисов, как транзакция, безопасность, параллельный доступ, распределение, служба именования либо возможность асинхронного вызова.

                Апплеты — это приложения из графического пользовательского интерфейса (GUI), выполняемые в браузере. Они задействуют насыщенный интерфейс Swing API для производства мощных пользовательских интерфейсов.

                Приложениями называются программы, выполняемые на клиентской стороне. Как правило, они относятся к графическому пользовательскому интерфейсу (GUI) и применяются для пакетной обработки.

                Веб-приложения (состоят из сервлетов и их фильтров, слушателей веб-событий, страниц JSP и JSF) — выполняются в веб-контейнере и отвечают на запросы HTTP от веб-клиентов. Сервлеты также поддерживают конечные точки веб-служб SOAP и RESTful.

                Корпоративные приложения (созданные с помощью технологии Enterprise Java Beans, службы сообщений Java Message Service, интерфейса Java API для транзакций, асинхронных вызовов, службы времени) выполняются в контейнере EJB. Управляемые контейнером компоненты EJB служат для обработки транзакционной бизнес-логики. Доступ к ним может быть как локальным, так и удаленным по протоколу RMI (или HTTP для веб-служб SOAP и RESTful).

                Технологии

                Технология Назначение
                Servlets Java-классы, которые динамически обрабатывают клиентские запросы и формируют ответы (обычно HTML страницы).
                Java Server Faces (JSF) Фреймворк для построения веб приложений с пользовательским интерфейсом. Позволяет включать на страницу компоненты пользовательского интерфейса (например, поля и кнопки), преобразовывать и валидировать данные компоненты, а также сохранять эти данные в хранилищах на стороне сервера.
                Java Server Faces Facelets technology Представляет из себя подтип приложения JSF, в котором вместо JSP страниц используются XHTML страницы
                Java Server Pages (JSP) Текстовые документы, которые компилируются в сервлеты. Позволяет добавлять динамический контент на статические страницы (например, HTML-страницы)
                Java Server Pages Standard Tag Library (JSTL) Библиотека тегов, в которой инкапсулирована основная функциональность в контексте JSP страниц.
                Expression Language Набор стандартных тегов, которые используются в JSP и Facelets страницах для доступа к Java EE компонентам.
                Contexts and Dependency Injection for Java EE (CDI) Представляет собой набор сервисов, предоставляемых Java EE контейнерами, для управления жизненным циклом компонентов, а также внедрения компонентов в клиентские объекты безопасным способом.
                Java Beans Components Объекты, которые выступают в роли временного хранилища данных для страниц приложения.
                Технология Назначение
                Enterprise Java Beans (enterprise bean) components EJB — это управляемые компоненты, в которых заключена основная функциональность приложения.
                JAX-RS RESTful web services Представляет из себя API для разработки веб-сервисов, соответствующих архитектурному стилю REST.
                JAX-WS web service endpoints API для создания и использования веб-сервисов SOAP.
                Java Persistence API (JPA) entities API для доступа к данным в хранилищах данных и преобразования этих данных в объекты языка программирования Java и наоборот.
                Java EE managed beans Управляемые компоненты, которые предоставляют бизнес-логику приложения, но не требуют транзакционных функций или функций безопасности EJB.
                Java Message Service API службы сообщений Java (JMS) — это стандарт обмена сообщениями, который позволяет компонентам приложения Java EE создавать, отправлять, получать и читать сообщения. Что обеспечивает распределенную, надежную и асинхронную связь между компонентами.
                • ERP (англ. Enterprise Resource Planning, система планирования ресурсов предприятия),
                • CRM (англ. Customer Relationship Management, система управления взаимоотношениями с клиентами).

                Java EE vs Spring

                Введение в Java EE - 3

                Все это время JCP работал над одним — добиться максимального упрощения всего, что только можно внутри Java EE. В итоге в современном EJB для описания бина достаточно указать одну аннотацию над классом, что предоставляет разработчику доступ ко всей мощи технологии Enterprise Java Beans. И подобные упрощения затронули каждую спецификацию внутри Java EE. В итоге по функционалу Spring и Java EE примерно разделяют паритет. Где-то что-то лучше, где-то что-то хуже, но если смотреть глобально, больших различий нет. То же самое касается сложности работы. И Spring, и Java EE являются превосходными инструментами. Пожалуй, лучшими из того, что сейчас есть, для построения корпоративных сетевых приложений на языке Java. Однако, Java EE может работать в общем случае только в рамках Enterprise Application Server’a (Tomcat таковым не является), а приложение на Spring стеке может работать на чем угодно (на том же Tomcat), и даже вообще без сервера (так как запустит его внутри себя самостоятельно). Это делает Spring идеальным инструментом для разработки небольших приложений с GUI на Front-end или для микросервисной архитектуры. Но отказ от зависимости от серверов приложений отрицательно сказался на масштабируемости Spring-приложений. А Java EE хорошо подходит для реализации масштабируемого монолитного кластерного приложения. На рынке труда на текущий момент более востребованы разработчики, знакомые со Spring Framework. Так сложилось исторически: в те времена, когда Java EE была излишне усложнена, Spring «набрал клиентскую базу». И тем не менее, однозначного ответа на вопрос что учить Spring или Java EE, нет. Новичку можно дать следующий совет. Познакомиться (хотя бы поверхностно) с обеими платформами. Написать небольшой домашний проект и на Java EE и на Spring. А далее углубляться в тот фреймворк, который потребуется на работе. В итоге, переключаться между Spring и Java EE не составит большого труда.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *