17
1 Лекция 4 Архитектуры серверов приложений Java Platform, Enterprise Edition, сокращенно Java EE (до версии 5.0 — Java 2 Enterprise Edition или J2EE) — набор спецификаций и соответствующей документации для языка Java, описывающей архитектуру серверной платформы для задач средних и крупных предприятий. Спецификации детализированы настолько, чтобы обеспечить переносимость программ с одной реализации платформы на другую. Основная цель спецификаций — обеспечить масштабируемость приложений и целостность данных во время работы системы. JEE во многом ориентирована на использование еѐ через веб как в интернете, так и в локальных сетях. Вся спецификация создаѐтся и утверждается через JCP (Java Community Process) в рамках инициативы Sun Microsystems Inc. Популярности JEE также способствует то, что Sun предлагает бесплатный комплект разработки, SDK (Software Development Kit), позволяющий предприятиям разрабатывать свои системы, не тратя больших средств. В этот комплект входит сервер приложений GlassFish с лицензией для разработки. Java Platform, Enterprise Edition

Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

1 Лекция 4

Архитектуры серверов приложений

Java Platform, Enterprise Edition, сокращенно Java EE (до версии 5.0 — Java

2 Enterprise Edition или J2EE) — набор спецификаций и соответствующей

документации для языка Java, описывающей архитектуру серверной

платформы для задач средних и крупных предприятий.

Спецификации детализированы настолько, чтобы обеспечить переносимость

программ с одной реализации платформы на другую.

Основная цель спецификаций — обеспечить масштабируемость приложений

и целостность данных во время работы системы. JEE во многом

ориентирована на использование еѐ через веб как в интернете, так и в

локальных сетях. Вся спецификация создаѐтся и утверждается через JCP (Java

Community Process) в рамках инициативы Sun Microsystems Inc.

Популярности JEE также способствует то, что Sun предлагает бесплатный

комплект разработки, SDK (Software Development Kit), позволяющий

предприятиям разрабатывать свои системы, не тратя больших средств. В этот

комплект входит сервер приложений GlassFish с лицензией для разработки.

Java Platform, Enterprise Edition

Page 2: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

2 Процесс разработки Java EE был долгое время подконтролен Oracle

и не являлся достаточно гибким и открытым. С целью устранения этого недостатка

в 2017 году Oracle передала проект Java EE под крыло некоммерческой

организации Eclipse Foundation, которая в течение длительного времени

курировала развитие платформы для создания интегрированных сред разработки и

различных проектов на языке Java. Инициативу Oracle поддержали компании IBM

и Red Hat, которые являются крупнейшими участниками разработки Java EE.

Однако при этом компания Oracle отказалась передать Eclipse права на

использование торговой марки Java, в связи с чем была начата инициатива по смене

названия проекта.

В результате голосования в 2018

году проект получил название

Jakarta EE.

Glassfish Eclipse Glassfish

Java Community

Process (JCP)

Jakarta EE Working

Group (Jakarta EE)

Oracle development

management

Eclipse Enterprise

for Java (EE4J)

Project

Management

Committee (PMC)

Кроме того, были переименованы

некоторые связанные с JEE технологии

и организации:

Page 3: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

3 Стандарты и технологии, входящие в состав Java EE

EJB – Enterprise JavaBeans – спецификация технологии написания и поддержки

серверных компонентов, содержащих бизнес-логику.

JPA – Java Persistence API – предоставляет возможность сохранять в удобном виде

Java-объекты в базе данных.

Сервлет – класс, расширяющий функциональные возможности сервера. Сервлет

взаимодействует с клиентами посредством принципа запрос-ответ.

JSP - JavaServer Pages —технология, позволяющая веб-разработчикам легко создавать

содержимое, которое имеет как статические, так и динамические компоненты. По

сути, страница JSP является текстовым документом, который содержит текст двух

типов: статические исходные данные, которые могут быть оформлены в одном из

текстовых форматов HTML, SVG, WML, или XML, и JSP элементы, которые

конструируют динамическое содержимое.

JSTL – JavaServer Pages Standard Tag Library – «стандартная библиотека тегов JSP».

Она расширяет спецификацию JSP, добавляя библиотеку JSP тегов для общих нужд,

таких как разбор XML данных, условная обработка, создание циклов и поддержка

интернационализации.

Интернационализация — технологические приѐмы разработки, упрощающие адаптацию

продукта (такого как программное или аппаратное обеспечение) к языковым и культурным

особенностям региона (регионов), отличного от того, в котором разрабатывался продукт.

Page 4: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

4 JSF - JavaServer Faces — компонентный серверный фреймворк для разработки

веб-приложений на технологии Java, предназначенный для облегчения разработки

пользовательских интерфейсов (ПИ) для JEE-приложений. Подход JSF основывается на

использовании компонентов. Состояние компонентов ПИ сохраняется, когда пользователь

запрашивает новую страницу и затем восстанавливается, если запрос повторяется.

JAX-WS - Java API for XML Web Services — это прикладной программный интерфейс языка

Java для создания веб-служб.

JNDI - Java Naming and Directory Interface — это Java API, организованный в виде службы

каталогов, который позволяет Java-клиентам открывать и просматривать данные и объекты

по их именам.

JMS - Java Message Service — стандарт промежуточного ПО для рассылки сообщений,

позволяющий приложениям, выполненным на платформе Java EE, создавать, посылать,

получать и читать сообщения.

JTA - Java Transaction API - Java API для транзакций. Определяет взаимодействие между

менеджером транзакций и другими участниками распределенной транзакционной системы.

JAAS - Java Authentication and Authorization Service — реализация в языке

программирования Java стандарта системы информационной безопасности PAM. Pluggable

Authentication Modules (PAM, подключаемые модули аутентификации) — это набор

разделяемых библиотек, которые позволяют интегрировать различные низкоуровневые

методы аутентификации в виде единого высокоуровневого API. Это позволяет предоставить

единые механизмы для управления, встраивания прикладных программ в процесс

аутентификации.

Page 5: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

5 JavaMail - это Java API, предназначенный для получения и отправки

электронной почты с использованием протоколов SMTP, POP3 и IMAP.

JACC - Java Authorization Contract for Containers – это стандарт, который

определяет контракты безопасности между модулями СП и политики

авторизации. Эти контракты определяют способы установки, настройки и

использования провайдеров авторизации в решениях доступа.

JCA - J2EE Connector Architecture – решение на базе технологии Java для

соединения серверов приложений и корпоративных информационных систем в

рамках решений интеграции корпоративных приложений.

JAF - JavaBeans Activation Framework - стандартное расширение для платформы

Java, позволяющее воспользоваться стандартными услугами: определить тип

произвольного фрагмента данных; инкапсулировать доступ к нему; обнаружить

доступные для него операции; и установить соответствующий боб (bean) для

выполнения операции(й).

StAX - Streaming API for XML – интерфейс прикладного программирования для

чтения и записи XML-файлов.

CDI - Context and Dependency Injection - Внедрение контекстов и зависимостей -

помогают связать уровень веб-узлов и уровень транзакций платформы JEE. CDI -

это набор услуг, которые, позволяют разработчикам использовать JavaBeans с JSF

в веб-приложениях.

Page 6: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

6

Версия Полное имя Дата публикации

1.0 Java 2 Platform Enterprise Edition, v 1.0 декабрь 1999

1.2 Java 2 Platform Enterprise Edition, v 1.2 2000

1.2.1 Java 2 Platform Enterprise Edition, v 1.2.1 23 мая 2000

1.3 Java 2 Platform Enterprise Edition, v 1.3 24 сентября 2001

1.4 Java 2 Platform Enterprise Edition, v 1.4 24 ноября 2003

5.0 Java Platform, Enterprise Edition, v 5 11 мая 2006

6.0 Java Platform, Enterprise Edition, v 6 6 декабря 2009

7.0 Java Platform, Enterprise Edition, v 7 12 июня 2013

8.0 Java Platform, Enterprise Edition, v 8 18 сентября 2017

9.0 Java Platform, Enterprise Edition, v 9 ~ 2018

Актуальная версия Java EE (JEE) имеет номер 9.0.

При переходе на версию 5.0 к набору спецификаций добавилось несколько новых

технологий и изменилось название спецификации с J2EE (Java 2 Platform,

Enterprise Edition), на Java Platform, Enterprise Edition, сокращѐнно Java EE.

Page 7: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

7 Технологии, входящие в состав JEE в разных версиях

Page 8: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

8

.NET Framework — программная платформа, выпущенная

компанией Microsoft в 2002 году. Основой платформы является

общеязыковая среда исполнения Common Language Runtime (CLR),

которая подходит для разных языков программирования.

Функциональные возможности CLR доступны в любых языках

программирования, использующих эту среду.

Считается, что платформа .NET Framework явилась ответом

компании Microsoft на набравшую к тому времени большую

популярность платформу Java компании Sun Microsystems (до 2017

года принадлежала Oracle, ныне находится под управлением Eclipse

Foundation).

.NET является патентованной технологией корпорации Microsoft и

официально рассчитана на работу под операционными системами

семейства Microsoft Windows, однако существуют проекты (Mono, и

Portable.NET, .NET Core), позволяющие запускать программы .NET

на некоторых других операционных системах.

Microsoft .NET Framework

Page 9: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

9 Архитектура .NET

Программа .NET Framework

КомпилляторСборка – переведение в промежуточный

байт-код Common Intermediate Language (СIL)

Утилита Ngen.exe

Исполнение кода Виртуальная машина Common

Language Runtime (CLR)

Транслирование

байт-кода в

исполняемый код

для конкретного

целевого процессора

JIT-компиллятор

Перевод байт-кода в машинные

коды нужного процессора

Базовая безопасность Управление памятью

Система исключений

Page 10: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

10 Программа для .NET Framework, написанная на любом поддерживаемом языке

программирования, сначала переводится компилятором в единый для .NET

промежуточный байт-код Common Intermediate Language (CIL) (ранее назывался

Microsoft Intermediate Language, MSIL). В терминах .NET получается сборка, англ.

assembly.

Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR),

либо транслируется утилитой NGen.exe в исполняемый код для конкретного целевого

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

разработчиков от необходимости заботиться об особенностях аппаратной части. В

случае использования виртуальной машины CLR, встроенный в неѐ JIT-компилятор «на

лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного

процессора. Современная технология динамической компиляции позволяет достигнуть

высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о

базовой безопасности, управлении памятью и системе исключений, избавляя

разработчика от части работы.

Среды разработки, поддерживающие .NET:

Microsoft Visual Studio (C#, Visual Basic .NET, Managed C++, F#),

SharpDevelop, MonoDevelop,

Embarcadero RAD Studio (Delphi for .NET),

Zonnon, PascalABC.NET, JetBrainsRider

Приложения .NET также можно разрабатывать в текстовом редакторе, просто вызывая

компилятор из командной строки.

Page 11: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

11 Версия Дата

выхода Visual Studio По умолчанию в Windows

1.0 1.05.2002 Visual Studio.NET

1.1 1.04.2003 Visual Studio.NET 2003 Windows Server 2003

2.0 11.07.2005 Visual Studio 2005 Windows , Windows 7, Windows Server 2008

R2

3.0 6.11.2006 Visual Studio 2005 +

расширения

Windows , Windows Server 2008, Windows 7,

Windows Server 2008 R2

3.5 9.11.2007 Visual Studio 2008 Windows 7, Windows Server 2008 R2

4.0 12.04.2010 Visual Studio 2010 Windows 8, Windows Server 2012

4.5 15.08.2012 Visual Studio 2012 Windows 8, Windows Server 2012

4.5.1 17.10.2013 Visual Studio 2013 Windows 8.1, Windows Server 2012 R2

4.5.2 5.05.2014

4.6 20.07.2015 Visual Studio 2015 Windows 10

4.6.1 17.11.2015 Visual Studio 2015

Update 1 Windows 10 v1511

4.6.2 20.06.2016 Windows 10 v1607

4.7 5.04.2017 Visual Studio 2017 Windows 10 v1703

4.7.1 17.10.2017 Visual Studio 2017 v15.5 Windows 10 v1709, Windows Server 2016

(version 1709)

4.7.2 30.04.2018 Visual Studio 2017 v15.8 Windows 10 v1803

Page 12: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

12 Архитектура .NET Framework описана и

опубликована в спецификации Common

Language Infrastructure (CLI),

разработанной Microsoft и

утверждѐнной ISO (Международная

организация по стандартизации) и Еcma

(ранее ECMA - European Computer

Manufacturers Association, организация,

занимающаяся вопросами

стандартизации информационных и

коммуникационных технологий).

В CLI описаны:

типы данных .NET,

формат метаданных о структуре

программы,

система исполнения байт-кода и др.

Объектные классы .NET, доступные для

всех поддерживаемых языков

программирования, содержатся в

библиотеке Framework Class Library

(FCL). Ядро FCL называется Base Class

Library (BCL).

Page 13: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

13 Windows Forms – API, отвечающий за графический интерфейс

пользователя.

ASP.NET(Active Server Pages) — технология создания веб-приложений и

веб-сервисов.

ADO.NET – технология, предостав-ляющая .NET-приложениям доступ к

данным.

Windows Presentation Foundation (WPF) – система для построения

клиентских приложений Windows с визуально привлекательными воз-

можностями взаимодействия с пользователем. Разрабатываемые

приложения могут быть автономными или запускаемыми в браузере.

Windows Communication Foundation (WCF) - программный фреймворк,

используемый для обмена данными между приложениями. До выпуска в

составе .NET Framework 3.0, был известен под кодовым именем Indigo.

WCF позволяет создавать безопасные и надѐжные транзакционные

системы через упрощѐнную унифицированную программную модель

межплатформенного взаимодействия. В WCF заложены принципы

интероперабельности, которые позволяют организовывать работу с

другими платформами.

Page 14: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

14 Windows Workflow Foundation (WF) – технология для определения,

выполнения и управления рабочими процессами (англ. workflow). (Рабочий

процесс (поток) – 1. графическое представление процесса выполнения

задачи и связанных с ним подпроцессов; 2. способ поступления информации

к различным объектам, участвующим в процессе). WF ориентирована на

визуальное программирование и использует декларативную модель

программирования.

Windows CardSpace (WCS) – это способ идентификации пользователей при

перемещении между ресурсами Интернета без необходимости повторного

ввода имен и паролей. 15 февраля 2011 корпорация Майкрософт объявила об

отмене Windows CardSpace 2.0 и о работе над замещающим ПО U-Prove.

Language Integrated Query (LINQ) — проект по добавлению синтаксиса

языка запросов, напоминающего SQL (structured query language — «язык

структурированных запросов»), в языки программирования платформы .NET.

ADO.NET Entity Framework (EF) — объектно-ориентированная технология

доступа к данным. Предоставляет возможность взаимодействия с объектами

как посредством LINQ (LINQ to Entities), так и с использованием Entity SQL.

Page 15: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

15 Параллельный LINQ (PLINQ) – параллельная реализация LINQ to Objects.

PLINQ, реализующая полный набор стандартных операторов запроса LINQ в

виде расширения для пространства имен T:System.Linq и имеющая

дополнительные операторы для параллельных операций. PLINQ может

значительно увеличить скорость запросов LINQ to Objects, эффективнее

используя все доступные ядра на главном компьютере.

Task Parallel Library (TPL) - библиотека параллельных задач,

представляющая собой сочетание общих типов и API, которые позволяют

реализовывать параллелизм и согласованность операций. TPL является

высокоуровневым каркасом параллельного программирования для .NET кода,

позволяющим максимально использовать производительность многоядерных

процессоров. TPL позволяет реализовать логический параллелизм (указать то,

что потенциально может работать параллельно) вместо жесткого деления на

потоки. Реальное распараллеливание библиотека производит во время

выполнения в зависимости от доступных аппаратных средств.

Modern UI Runtime – дизайнерский стиль, ориентированный на типографское

оформление интерфейса пользователя.

Task-based Asynchronous Pattern (TAP) – основанная на задачах асинхронная

модель – схема программирования, направленная на создание асинхронных

потоков в выполнении программы и управление ими.

Page 16: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

16 Одной из основных идей Microsoft .NET является совместимость

программных частей, написанных на разных языках. Например, служба,

написанная на C++ для Microsoft .NET, может обратиться к методу класса из

библиотеки, написанной на Delphi. Каждая библиотека (сборка) в .NET имеет

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

между разными версиями сборок.

Mono

Mono — проект по созданию полноценного воплощения системы .NET

Framework на базе свободного программного обеспечения.

Основной разработчик проекта Mono — компания Xamarin (ранее Novell).

После заключения Microsoft договорѐнности с Novell, платформа Mono была

официально признана реализацией .NET на Unix-подобных операционных

системах: Linux, Mac OS X и других. (Хотя Mono успешно работает и под

Microsoft Windows). Однако договорѐнность касается только Novell и клиентов

Novell; также технологии ASP.NET, ADO.NET и Windows Forms не были

стандартизированы ECMA/ISO, и использование их в Mono находится под

угрозой юридических претензий со стороны Microsoft, поэтому Mono

предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же

время рекомендует не использовать эти API.

Page 17: Лекция 4 1 Архитектуры серверов приложенийk504.xai.edu.ua/html/ucheba/rss/RSS_Lekciya_4.pdf · Лекция 4 1 Архитектуры серверов

17 .NET Core

.NET Core - созданный в 2014 году кроссплатформенный (Windows, Mac,

Linux) аналог .NET Framework с открытым исходным кодом. Он содержит

среду CoreCLR — кросс-платформенную реализацию CLR, в которую входит

JIT-компилятор — RyuJIT. Также .NET Core включает в себя CoreFX — набор

библиотек, функциональность которых частично совпадает с BCL: API .NET

Core предоставляет подмножество API .NET Framework, но также и

предоставляет ряд собственных API.

.NET Core версии 1.0 выпущен 27 июня 2016 года, вместе с Microsoft Visual

Studio 2015 Update 3, в которой поддерживается разработка под .NET Core.

16 ноября 2016 года был выпущен .NET Core версии 1.1

14 августа 2017 года состоялся релиз .NET Core версии 2.0