Skip to content

Instantly share code, notes, and snippets.

@vchernogorov
Last active December 21, 2023 06:27
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save vchernogorov/0911283eac106117991da153a344b752 to your computer and use it in GitHub Desktop.
Save vchernogorov/0911283eac106117991da153a344b752 to your computer and use it in GitHub Desktop.
Java EE

Клиент

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

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

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

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

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

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

    diagram

Контейнеры

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

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

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

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

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

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

Общее

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

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

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

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

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

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

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

    • EJB применяется, когда необходимо:
      • Поддержка сохранности данных (persistence); данные должны быть в сохранности даже после остановки программы, чаще всего достигается с помощью использования базы данных.
      • Поддержка распределённых транзакций.
      • Поддержка параллельного изменения данных и многопоточность.
      • Поддержка событий.
      • Поддержка именования и каталогов (JNDI).
      • Безопасность и ограничение доступа к данным.
      • Поддержка автоматизированной установки на сервер приложений.
      • Удалённый доступ.
    • EJB разделяются на 3 типа: Entity Beans, Session Beans, Message Driven Beans.
  8. ERP (Enterprise Resource Planning) - метод эффективного использования человеческих ресурсов, программного и технического обеспечения для увеличения продуктивности и прибыли, что упрощает бизнес решения компании. Проще говоря, ERP решение позволяет каждому отделу или бизнес сфере управляться централизованно, при этом работать отдельно друг от друга. [source]

    • ERP может включать в себя множественные приложения или один програмнный пакет, который аккуратно распространяет данные, необходимые для нескольких бизнес отделов компании.
    • ERP может содержать множество различных бизнес моделей, включая: производство, платежную ведомость, продажи, реестр, партнеров, финансы и бухгалтерию, CRM (Customer Relationship Management).
  9. TP (Transaction Processing) - процесс завершения задачи и/или пользовательского/программного запроса мгновенно или в рантайме. Это набор различных взаимосвязанных задач и процессов, которые должны работать синхронно, чтобы завершить процесс транзакции. [source]

    • TP относится к любой real-time транзакции или процессу, представленному TPS.
  10. TPS (Transaction Processing System) или Transaction Server - система программного обеспечения или комбинация технического/программного обеспечения, которая поддерживает транзакционные технологии. [source]

    • Когда TPS получает запрос, то она согласовывается с соотвествующей системой для авторизации, для зароса данных или какого-нибудь определенного задания для завершения транзакции.
    • Например, когда сделан запрос на выдачу материальных средств в банкомате, он сперва авторизирует пользователя согласно его данным из карточки и сохраняет запрос/статус в банковской системе. Когда информация получена, банкомат преобразует пользовательский запрос в транзакцию. Кроме того, TPS может принять, отклонить или прекратить транзакцию, в зависимости от переменных среды.
  11. API (Application Programming Interface) - это программа, которая производит взаимодействие с другими программами. Например, она позволяет программисту взаимодействовать с приложением, используя набор доступных этим API функций.[source]

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

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

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

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

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

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

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

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

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

    • Главные задачи веб-слоя:
      • Динамическая генерация контента для клиента.
      • Сбор входных данных от пользователей клиентского интерфейса и возврат соответствующих результатов из компонентов бизнес-слоя.
      • Контролировать отображение страниц клиента.
      • Регулировать состояние данных во время текущей сессии пользователя.
      • Представлять некоторую базовую логику и временно хранить некоторые данные в управляющих бинах.
    • Список самых главных JEE технологий, которые используются в веб-слое в JEE приложениях: JSF, EL, Servlets, CDI, DI.
  5. Business Tier - данный слой состоит из компонентов, которые предоставляют бизнес логику приложению. [source]

    • Бизнес логика - это код, который предоставляет функциональность определенным доменам, таким как: финансовая индустрия или e-commerce сайт.
    • Список самых главных JEE технологий, которые используются в бизнес-слое в JEE приложениях: EJB (EB) компоненты, JAX-RS RESTful веб сервисы, JPA сущности.
  6. EIS (Enterprise Information System) Tier - данный слой состоит из серверов баз данных, ERP систем и других существующих источников данных по типу мейнфреймов. [source]

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

    example

Прочие API

1. Прочие APIs

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

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

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

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

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

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

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

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


2. JSE APIs

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

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

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

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

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

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

    • Использование аннотаций устраняет необходимость создания дескрипторов веб-служб. Декларация конечных точек (endpoints) происходит непосредственно в классах Java.
    • Прямая интеграция с JAXB 2.0.
    • Внедрение ресурсов (Resource injection).
    • Поддержка MTOM.
    • Возможность выбора между двумя путями разработки: снизу-вверх (программист разрабатывает endpoint-классы сам) и сверху-вниз (Java классы генерируются по WSDL).
  7. JAF (JavaBeans Activation Framework) - предоставляет фреймворк для управления данными в различных MIME типах. Используется в JavaMail API. [source]

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

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

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

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


3. Servlet API / JSP

  1. CGI (Common Gateway Interface) - технология, предоставляющая протокол взаимодействия вашего серверного кода с веб-сервером.

    • CGI программы в рантайме создают процесс для обработки запроса.
    • CGI не может шарить данные между интерфейсами.
    • CGI не может автоматически распарсить и декодировать HTML форму.
    • CGI не может считывать и устанавливать HTTP заголовки, обрабатывать куки и трекать сессиии.
    • Плюсы:
      • Может быть написан на различных языках, но преимущественно пишется на perl.
      • Баги не крашат веб-сервер.
      • Так как выделяет целый процесс, то сводит к минимуму concurrency конфликты.
    • Минусы:
      • Время респонса высоко из-за создания тяжеловесного процесса.
      • Не расширяем.
      • Нет разделения представления от бизнес модели
  2. Servlet - выполняет те же функции, что и CGI, но имеет множество преимуществ перед ним.

    • Сервлеты могут шарить данные друг с другом.
    • Сервлеты портируемы.
    • В сервлетах орудает JVM и каждый запрос обрабатывается легковесным потоком.
    • Преимущества перед CGI: сервлеты быстрые, расширяемые, объектно-ориентированные, платформонезависимые, могут логироваться, секьюрные.

API спецификациий

1. JEE Specification APIs

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

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

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

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

2. Web Service Specification APIs

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

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

    • Используя анотации из данной спецификации, можно аннотировать реализацию веб-сервиса или интерфейс веб-сервиса.
    • Она позволяет разработчикам создавать портируемые веб сервисы с помощью простых POJO, добавляя им аннотации, а также помогает генерировать веб сервисы с помощью специального визарда или с помощью публикации
  3. JAX-RS (Java API for RESRful Web Services) - спецификация определяет APIs для разработки веб сервисов, постороенных согласно REST стилю. [source]

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


3. Web Specification APIs

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

    • Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов.
  2. JSF (JavaServer Faces) - фреймворк пользовательского интерфейса, для создания веб-приложений. [source]

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

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

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

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


4. Enterprise Specification APIs

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

    • EJB применяется, когда необходимо:
      • Поддержка сохранности данных (persistence); данные должны быть в сохранности даже после остановки программы, чаще всего достигается с помощью использования базы данных.
      • Поддержка распределённых транзакций.
      • Поддержка параллельного изменения данных и многопоточность.
      • Поддержка событий.
      • Поддержка именования и каталогов (JNDI).
      • Безопасность и ограничение доступа к данным.
      • Поддержка автоматизированной установки на сервер приложений.
      • Удалённый доступ.
    • EJB разделяются на 3 типа: Entity Beans, Session Beans, Message Driven Beans.
  2. JavaMail. Многим приложениям требуется функция отправки сообщений электронной почты, которая может быть реализована благодаря этому интерфейсу. [source]

    • JavaMail API разделяется на 2 части:
      • Интерфейс уровня приложения, используемый компонентами приложения для отправки сообщений электронной почты.
      • Интерфейс сервис провайдера.
  3. JCA (Java Connector Architecture) - коннекторы позволяют получить доступ к корпоративным информационным системам (EIS) с компонента JEE. К таким компонентам относятся базы данных, мейнфреймы, либо программы для планирования и управления ресурсами предприятия (ERP). [source]

    • Существующие приложения и EISs, интегрированные в JEE платформу через JCA, могут восприниматься как XML-based веб сервисы из-за использования JAX-WS и JEE компонентных моделей.
  4. JPA (Java Persistence) — стандартный интерфейс для объектно-реляционного отображения (ORM). С помощью встроенного языка запросов JPQL вы можете обращаться к объектам, хранящимся в основной базе данных. [source]

    • JP используется объектно-реляционное отображение для устранения пробела между объектно-ориентированной моделью и реляционной базой данных.
    • JP содержит следущие сервисы: JPA (Java Persistence API), QL (Query Language), метаданные для объектно-реляционного отображения.
  5. JTA (Java Transaction API) — этот сервис предлагает интерфейс разграничения транзакций, используемый контейнером и приложением. Он также предоставляет интерфейс между диспетчером транзакций и диспетчером ресурсов на уровне интерфейса драйвера службы. [source]

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

@ggrachdev
Copy link

Благодарю!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment