Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

JAVA. Серверные приложения

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
Часть 1. Электронная коммерция 31
Поставка информационных ресурсов без ограничения. Теперь не на­до идти сдавать 20 кг макулатуры, чтобы получить какой-то источник информации. Клиент получает поддержку в том объеме, который ему требуется без каких-либо ограничений. Он получает любую доступную информацию из информационного узла в удобном для него виде, текста, видео-, графического изображения или еще в чем. Теперь заказчик не ждет специалиста для чтения документации, заказчик сам использует полученную документацию.
В сети очень популярное решение предоставления информации име­нуется сайтом. А специфика указания адреса упрощает поиск необхо­димого ресурса. Две улицы «строителей» здесь не существуют. Web­сайт является прекрасным местом, оформляющимся без юридических проволочек, за него не надо платить налог на землю, он может быть та­ким большим, каким захочется, и самое главное, он может содержать только один ресурс, фотографию владельца. Сайт — универсальное средство, предоставляющее и место для размещения рекламы, и орга­низации встреч, и даже представлении адреса. А современные техноло­гии, часть из которых описана в данной книге, вдохнут в Web-сайт не­повторимость и живость.
Сеть — электронная сфера, а где, как не в электронной сфере, со­здаются презентации и моделируются бизнес-процессы. Web дает шанс e-commerсe использовать все доступные ресурсы единовременно. Ну­жен только художник, а желательно начальник с художественным вку­сом, и презентация будет готова в течение нескольких минут.
Наконец, при отсутствии какой-либо необходимой заказчику инфор­мации на одном информационном узле его запрос можно перенаправить на другой узел в течение нескольких секунд, что значительно облегчает жизнь самого заказчика, не говоря о жизни других участников бизнес­процесса.
Все это связано с малой затратной стоимостью и малыми инвестици­онным рисками. Ничто не мешает создавать сайты один за другим, без каких-либо больших финансовых вложений. А заявить во всеуслыша­ние о новой услуге или новом товаре можно так быстро, как быстро об этом принято решение.
При всей пестроте используемых машин и операционных систем в Web существует всего два стандарта предоставления информации кли­енту. Это значит, что для различных клиентов создание информацион­ного предоставления данных будет стандартным. А все вместе выше­сказанное говорит о том, что использовать Web-технологии в e-commer­сe приложениях достаточно выгодно.
Ну а если так все замечательно, тогда почему разговор о e-commerсe не вынесен в отдельную главу или даже часть в данной книге? Потому что книга в большей степени описывает создание серверных программ для Web-приложений, часть из которых является e-commerсe прило­жениями. В книге описывается именно практическая часть создания приложений одного, точнее, среднего звена Web-архитектуры.
В отличие от простых взаимодействий обычных приложений, e-com­merсe приложения описывают отношения между тремя основными уча­стниками деловой жизни: покупателем, партнером и поставщиком. Ра-
32 Часть 1. Электронная коммерция
ньше эти участники вели физические контакты, с рождением e-com­merсe практически все контакты стали виртуальными. Использование Web расширило экономические горизонты деловых отношений участни­ков бизнес-процесса. Вся прелесть перехода от физических контактов к виртуальным начинает проявляться при участии в бизнес-процессе нескольких участников. Независимость от типа предприятия, суммы капиталовложений и используемых программных средств позволяет e-commerсe объединить различных участников в одном временном и пространственном отрезке для улучшения координации совместных усилий по обогащению. Кроме того, электронное использование ресур­сов предприятия сотрудниками и партнерами сокращает расходы на документооборот. Сегодня Web используется не только для рекламных целей. Большое количество компаний доверяют e-commerсe практиче­ски все консультационные услуги, банки предоставляют возможность клиентам работать со счетами, не отходя от компьютера, страховые компании выписывают полисы и ведут учет страховых взносов, уже су­ществуют Web-магазины и Web-каталоги. Использование e-commer­сe позволяет управлять распространением и поддержкой продукции. E-commerсe на сегодняшний день значительно больше, чем интерактив­ные транзакции между покупателями и продавцами. Это единственный способ конкурировать в сегодняшней изменяющейся среде бизнеса.
E-commerсe представляет возможности дополнить существующие каналы сбыта и развить новые маркетинговые и коммерческие каналы, сократить деловой цикл времени, уменьшить бумажный документообо­рот, упорядочить административные взаимоотношения.
Практически все e-commerсe приложения можно разделить на со­ставные части и технику взаимодействия между этими частями. Клю­чевыми элементами каждого создаваемого e-commerсe приложения в большей степени являются обычные Web-элементы, такие, как серверы приложений и баз данных, сетевая инфраструктура, средства разработ­ки и непосредственно специфические сервисы или службы, используе­мые только в e-commerсe приложении. Структура общераспространен­ного e-commerсe решения состоит из нескольких различных по своей природе частей.
Топология приложений иллюстрирует различные пути конфигури­рования взаимодействий между пользователем, приложением и данными.
Топология исполнения приложения описывает различные, функ­циональные узлы e-commerсe приложения и способы решения бизнес-проблем, возникающих в момент исполнения e-commerсe приложения.
Отражение сервисов, которыми пользуется клиент в e-commerсe приложении. Под сервисами подразумеваются различного рода внутренние службы, обеспечивающие полную функциональность приложения.
Основные принципы взаимодействия всех компонентов e-commerсe приложения. О том, как и почему отдельные компоненты системы взаимодействуют между собой, описывается основными принципа­ми взаимодействия.
Часть 1. Электронная коммерция 33
Последовательное использование вышеуказанных этапов проектиро­вания и правильное понимание используемых топологий облегчит жизнь не только создателям систем, но и ее будущим пользователям.
Как и в повседневной жизни, где существует множество способов приобретения товаров и услуг, а значит, и множество различного рода взаимоотношений клиента и покупателя, так и в электронной сфере присутствует данное многообразие.
Отношения участников электронного бизнес-процесса описываются несколькими основными сценариями e-commerсe приложения.
USER-TO-BUSINESS
В данном сценарии пользователь, внешний или внутренний, взаимо­действует с данными или другими сервисами Web-приложения. Клиент осуществляет деловые отношения с предприятием, пользуясь корпора­тивными данными.
USER-TO-ONLINE BUYING
Является исключением из общего сценария User-to-Business.
В данном сценарии клиент явно становится покупателем, а предпри­ятие выступает в роли продавца. В современных периодических изда­ниях имеет специальную аббревиатуру (B2C).
BUSINESS-TO-BUSINESS
Сценарий, описывающий взаимоотношения минимум двух различ­ных предприятий. Отношения могут формироваться непосредственно между компаниями (B2B) без каких-либо посредников.
В другом случае во взаимоотношениях могут участвовать несколько предприятий, организованных в так называемый eMarketPlace (B2M2B). Как и в большинстве бизнес-сценариев, в eMarketPlace сценарии участ­вуют продающие и покупающие стороны, только теперь между участ­никами процесса описывается промежуточная структура. eMarketPlace является аналогом обычной биржи, не хочется говорить о продуктовом рынке. Данный сценарий очень напоминает электронные доски объявле­ний, только, в отличие от обычных сценариев, количество участников бизнес-процесса по данному сценарию не ограниченно.
USER-TO-USER
Сценарий сотрудничества между пользователями для совместного использования ресурсов e-mail, документы и т. д.
USER-TO-DATA
Клиент использует доступ к большим объемам данных, таким, как тексты, изображения, видеоинформация и т. д.
APPLICATION INTEGRATION
Единственный сценарий, в котором отсутствует клиент как физиче­ский объект, описывает взаимодействие между приложениями, такими, как Enterprise Resource Planning (ERP) системы, и обычные приложения.
34 Часть 1. Электронная коммерция
В настоящее время в современных e-commerсe приложениях исполь­зуются данные, которые должны быть расположены и отсортированы в определенном порядке, данные должны быть доступными и легко нахо­димыми. Именно для этой цели существует система управления реля­ционными базами данных.
Основным звеном любого e-commerсe приложения является база данных. Наличие мощной базы данных, способной справляться не толь­ко с большим количеством запросов, но и обработкой мультимедийных объектов, позволяет предприятиям вести серьезный бизнес в электрон­ной сфере. Большинство информации требуется незамедлительно, в мо­мент обращения, а это значит, что хранилище данных должно иметь определенные качества. Качества, способные быстро и верно указать месторасположение необходимого ресурса. Вся деловая информация те­перь хранится в базе данных. OLAP (online analytical processing — опе­ративная аналитическая обработка) системы также основываются на данных, хранящихся с СУБД. Теперь можно использовать в аналитиче­ских запросах новые функции для скользящих итогов.
Проблемой большинства проектировщиков остается полное незнание используемых программных продуктов. Бывает, что прекрасно работав­шее приложение на одой платформе вдруг начинает вести себя очень странно на другой прекрасно, даже подобной. Создавать независимое приложение или строго ориентированное на одну платформу — это ре­шение остается за проектировщиком. Тем более разговор можно вести только о подобных системах. Сравнивать Windows-системы с UNIX­клонами бесполезно, для каждой используются свои собственные реше­ния. Вот здесь-то и можно упомянуть о Java, но разговор идет о выборе готовых программных пакетов, обеспечивающих целостность и работо­способность e-commerсe приложения.
Первоначальным выбором осуществляется подготовка платформы, на которой будет работать e-commerсe приложение. Выбор платформы основывается на следующих критериях:
доступность как самой платформы, так и специалистов по обслужи­ванию этой платформы;
могут существовать специальные требования заказчика по использо­ванию платформы;
Web-клиенты должны получить доступ к ресурсам-размещенным на данной платформе.
Выбор операционной системы и базы данных хоть главная, но не основная задача. Для прекрасной работы e-commerсe приложения тре­буется прекрасная работа всех компонентов системы. Говоря о выборе программного обеспечения, нельзя не упомянуть о выборе виртуальной машины Java. Например, для платформ Windows версия JVM 1.1.7 фирмы IBM оказалась значительно быстрее родной машины компании SUN версии 1.2. А на платформах самой IBM говорить о сравнении про­сто бесполезно. Также не бесполезно будет узнать, каким JIT-компиля­тором оснащен Web-сервер, реализующий созданное приложение. Дру­гим важным компонентом является EJB-контейнер, если в приложении предполагается использовать EJB. Java является потоковым языком, и большинство серверных компонентов многопоточные, использование
Часть 1. Электронная коммерция 35
многопроцессорных систем значительно ускоряет работу JVM. Некото­рые операционные системы предоставляют свои потоки для использова­ния JVM.
Глава 3. Использование языка программирования Java при
создании e-commerce приложений, основанных на Web
Java родилась как сетевой язык, не считая темных времен становле­ния языка для бытовой техники. Современная Java представляет собой достаточно мощное решение по создания Web-приложений и готова ре­шать практически все возможные задачи, стоящие перед проектиров­щиками e-commerсe приложений, начиная с апплетов, улучшающих внешний вид HTML-страницы, и заканчивая servlet, обеспечивающими работу сервера. Фирма SUN, чьим детищем является Java, создала не только высококлассный язык программирования, но и прекрасную тех­нологию с тем же названием. Теперь создание приложения не только опирается на хороший алгоритм, но и на возможности использования библиотек классов, а также манипулированием встроенными компонен­тами, контейнерами, серверами, да и самой виртуальной машиной JVM. И если раньше Java считалась языком апплетов, то с развитием e-com­merсe фирмы SUN, IBM и другие производители стали развивать Java­технологию уже для использования в приложениях электронной ком­мерции.
Использование технологии Java фирмы SUN позволяет расширить способности сетей. На сегодняшний момент Интернет и World Wide Web являются фундаментом для построения сетевых приложений для всех видов предприятий.
Java по своей природе является платформонезависимым, поддержи­вающим многопоточность, объектно-ориентированным языком програм­мирования.
Создание Java-приложений на настоящий момент является почти механической работой, в большей степени выполняемой машиной. IDE и Case средства позволяют написать готовый программный продукт прак­тически без рукописного введения текста.
В этом блеск и мощь Java. Фирма SUN продвигает добротный про­дукт, готовый строительный материал для коммерческих программных продуктов. И единственное, что остается программисту, — это исполь­зовать широко доступные ресурсы Java.
И вот здесь начинается самое страшное. Масштабность рекламной кампании по данному языку программирования привела к колоссально­му объему появившихся на свет библиотек классов, технологии, осно­ванных на этих классах. Порой самому программисту легче написать несколько строк кода, чем найти необходимый класс и разобраться с его методами. Технологии, реализованные на базе Java для рынка e-com­merсe, достаточно обширны, и в настоящий момент практически каждое из них превратилось в самостоятельное направление. Единственное, что
36 Часть 1. Электронная коммерция
объединяет весь этот «букет» технологии, — это язык, на котором пи­шутся компоненты, т. е. Java.
Applets, Beans и Enterprise bean далеко не полный перечень, воз­главляющий список Internet/Intranet-технологии, разработанных для использования Java-программистами в Web-приложениях.
Об апплетах (applets) — маленьких программках, встраиваемых в Web-страницы, — говорилось практически с момента анонсирования языка программирования Java фирмой SUN как сетевого языка про­граммирования для бытовой техники. Первыми компонентами, реализо­ванными на Java были апплеты. Развитие Java как сетевого языка про­граммирования для бытовой техники звучит угрожающе. Но так было в самом начале. Теперь Java нормальный язык программирования, кото­рому посвящено громадное количество литературы. Уже существует достаточное количество монографий, вышедших на русском языке и в полной мере описывающих как синтаксис, так и применение апплетов в Web-приложениях.
Еще одним Web-компонентом, создаваемым на языке Java, является JavaBean. Стандартный JavaBean — новый способ создания и распро­странения компонентов, содержащих графические элементы. JavaBe­an — это визуальный компонент, компонент, который может быть кноп­кой, списком, графиком или еще каким-либо графическим элементом. Кроме представления данных в пользовательском интерфейсе, JavaBean могут взаимодействовать с другими компонентами, использовать сообще­ния о событиях, получаемых от клиента для генерации каких-либо дейст­вий, и реализовывать часть логики приложения. JavaBean является ком­понентом с присущими ему интерфейсами и свойствами, JavaBean можно использовать как самостоятельную единицу или совместно с другими Ja­vaBean. Описание создания и установки JavaBean также можно найти на книжных полках, посвященных программированию на языке Java.
Одна задача — создать хорошее приложение, другая — сделать при­ложение доступным широкой общественности.
С давних пор для распространения программного обеспечения исполь­зуются архивы. Архивы — программы, основная задача которых заклю­чается в упорядоченном хранении данных. Архивы работают как тиски, «сжимая" хранимую в них информацию. Программные архивы предназ­начены именно для сжатия и хранения информации. Существует не­сколько типов архивов, различающихся по алгоритму сжатия. Самыми популярными в среде Интернета являются zip-, tar- и rar-архиваторы.
Для облегчения распространения создаваемых компонентов фирма SUN разработала специальный архив. Архив представляет собой файл, содержащий сжатые данные Jar (Java Archiv)-архивы подобны обыч­ным широко распространенным архивам, они содержат не только паке­ты классов, но и многие другие ресурсы: графические файлы, файлы свойств и непосредственно исполняемые Java-классы. Перед использо­ванием jar-архивы не надо распаковывать, как обычные архивы. Чтобы обеспечить доступ к классам, находящимся в архиве, существует три стандартных способа. Либо имя jar-архива указывается в системной пе­ременной Classpath, при этом нельзя забывать об ограничении в некото­рых операционных системах на длину системных переменных, либо
Часть 1. Электронная коммерция 37
устанавливаются в системном окружении IDE, что предпочтительнее, поскольку не зависит от длины системной переменной. Либо програм­мист указывает вручную в момент загрузки приложения самый неудач­ный вариант, поскольку нет ничего интересного писать одно и то же в командной строке.
Фирма SUN решила продолжить традицию и распространять Java­приложения и инструменты в архивах. Первая коллекция классов JDK 1.0 содержалась в zip-архиве — classes.zip. Но затем появился но­вый стандарт, полностью реализованный на Java-Jar. И все последую­щие коллекции Java-классов стали распространяться в виде jar-архи­вов. Уже следующая версия стандартного набора JDK хранила классы в архиве rt.jar. А впоследствии, с рождением новой версии Java2, появи­лись архивы, переназначенные для хранения нескольких различных типов приложений: для хранения приложений уровня предприятия ис­пользуется EAR — Enterprise ARchive, и для хранения Web-приложе­ний используется WAR — Web ARchive. Однако для распространения Java-компонентов пока самым распространенным остается jar-архив.
Применение языка Java в Web-приложениях основывается не столь­ко на создании новых частей кода, сколько на повсеместном использо­вании API. Различные наборы API, помогают избавиться от многотруд­ных повседневных программистских задач. Практически уже для всех уровней Web-приложений существуют свои наборы API. Клиентский уровень, сетевой, транспортный, а также уровни системного управле­ния уже описаны не только в стандартном решении SDK компании SUN, но в большой массе иных API распространяемых прочими произ­водителями Java-систем.
Основная часть стандартных классов распространяется с префиксом java практически все современные пакеты основного JDK, за редким исключением, распространяются с данным префиксом. Бoльшая часть API, применяемых в Web-технологии, поставляется в специальной группе пакетов (обычно расположенных в jar-архиве) Extension Frame­work, позволяющей программе использовать пакеты расширения javax. В отличие от стандартных пакетов, начинающихся со слов java, пакеты расширения javax располагаются в отдельных архивах и не являются частью стандартной платформы Java. Доля основных сервисов любого Web-приложения, самая большая, приведена в табл. 1, там же содер­жится описание основных Web-сервисов и Java API, с чьей помощью организуется доступ к сервисам Web-приложения.
Основные Web-компоненты и Java API
Web-компонент Используемый стандарт Java API
Web-сервер HTTP, HTML, XML Servlets, JAXP
Web-клиент HTTP, HTML, XML Applets, JAXP
Модель приложения CORBA IIOP JavaBeans
Бизнес-логика CORBA IIOP EJB, RMI
Web-скрипт ECMAScript JSP
Таблица 1
38 Часть 1. Электронная коммерция
Компания SUN — разработчик языка программирования Java — предложила свое решение по созданию единой модели Web-приложе­ний — J2EE-J2 Enterprise Edition платформа, основанная на новой вер­сии Java, версии два, и дополненная специальными возможностями для разработки приложений уровня предприятия. Почему основана на вто­рой версии, а не на первой? Итак, Java 2 — улучшенный и значительно обогащенный вариант первой версии 1995 г. начиная версии Java 2 раз­работчики получили в свои руки прекрасные средства управления при­ложениями. JVM, поставляемая в новой версии, работает стабильнее и быстрее. Java 2 поставляется с улучшенным набором пакетов — Java Fo­undation Classes (JFC), включающим улучшенный интерфейс пользова­теля, получивший название swing компонентов. Теперь с Java могут ра­ботать даже люди, имеющие ограниченные способности. Java 2 стала поддерживать технологию передачи данных между программами, став­шую уже стандартом Drag-and-Drop (DnD). В Java 2 добавлена поддерж­ка звука. Повышена производительность Java-приложений за счет улуч­шения работы «мусоросборщика». И если раньше все было впервой и вновь, то вторая версия залатала дыры и улучшила лучшее. Сравнению различных версий Java можно посвятить отдельную книгу, что не входит в планы автора. Кроме улучшения языка Java, само время, бурное раз­витие электронных взаимоотношений поставило задачу создания прило­жений, доступных в любое время, в любом месте, с помощью различных устройств. Существование различных типов клиентов породило пробле­му создания приложения, способного общаться с любым клиентом и лю­бой формой документа. Клиент работает с сервером, так было всегда. Именно для сервера важна проблема унифицированного клиента.
Для различных типов клиентов определены различные используе­мые API, рекомендуемые компанией SUN при создании Web-приложе­ний, основанных на языке Java.
Таблица 2 содержит описание основных типов Web-клиентов и необ­ходимые наборы API, используемые при создании Web-компонентов.
Таблица 2
Набор API для различных типов Web-клиентов, реализованных на Java
Используемый API Апплет-приложения
JNDI 1.2 Не требует Использует Использует
Servlet 2.2 Не требует Не требует Не требует
JSP1.1 Не требует Не требует Не требует
RMI-IIOP 1.0 Не требует Использует Использует
EJB 1.1 Не требует Использует Использует
JMS 1.0 Не требует Использует Использует
JavaMail 1.1 Не требует Не требует Использует
JAF 1.0 Не требует Не требует Использует
JTA 1.0 Не требует Не требует Использует
JDBC 2.0 Не требует Использует Использует
Стандартные
приложения
EJB-приложения
Часть 1. Электронная коммерция 39
Как можно видеть из данной таблицы при создания различных типов клиентов самым неприхотливым является уже ставший достаточно со­зревшим продуктом апплет. В отличие от него, EJB и стандартные при­ложения требуют для своей работы использование определенных набо­ров API. Данная таблица помогает разобраться с различными типами клиентов и определить именно тот тип, который наиболее соответствует решению поставленных задач.
Практически любому из представленных выше наборов API можно посвятить отдельную книгу, но даже этого может не хватить для полно­го освоения всех тонкостей программирования Web-компонентов, испо­льзующих Java-технологию. Большинство из указанных наборов API факультативно входят в новую Java-платформу — J2EE. Другие будут либо добавлены в будущие версии этой платформы, либо заменены на более усовершенствованные.
Платформа J2EE предназначена для создания серверных приложе­ний, работающих на втором и последующих уровнях Web-архитектуры. Использование J2EE позволяет в единой инфраструктуре организовать единое выполнение приложения. Основным элементом J2EE-платформы является контейнер. Контейнер представляет некоторое системное окружение, представляющее свои услуги выполняемому компоненту. Чаще всего именно контейнер управляет размещением и созданием эк­земпляра компонента. Впервые контейнеры стали использоваться в сре­де браузеров. Апплеты работают в среде браузера, но со своим систем­ным окружением. Для всякого браузера существовала своя версия JVM, Just-in-time (JIT)-компилятора и набора API, предназначенного для ра­боты апплета. Теперь контейнеры работают на сервере, представляя свои услуги для серверных объектов. Для работы компонента в контей­нере и описания поведения в момент исполнения создается специаль­ный дескриптор, текстовой файл, основанный на XML-тегах. Дескрип­тор содержит описание системных параметров и инициализационных данных, предлагающих контейнеру правильную версию создания ком­понента. Платформа J2EE оставляет на производителей установку свойств самих контейнеров. Любая компания может спокойно создавать свои контейнеры с собственными свойствами, в то время как роль кон­тейнера стандартизирована.
Существующая на момент написания книги версия J2EE работает только со стандартными наборами JDK версии 1.2, 1.2.2, 1.2.2-001 и т. д. Любителей усовершенствовать системы хочу предостеречь от одного неверного шага. Для J2EE можно использовать только вышеописанные версии, работать с версиями JDK 1.0 и 1.1 не представляется никакой возможности. Также могут возникнуть трудности при использовании JVM сторонних производителей. Все вышесказанное касается только Windows-систем, для других операционных систем могут предъявлять­ся другие требования. На момент написания книги основной номер опи­сываемой версии J2EE был 1.2 или декабрьский релиз 1999 г. Платфор­ма J2EE является готовым инструментом для создания многоуровневого приложения. В поставку набора разработчика (Software Development Kit (SDK) J2EE включена база данных CLOUDSCAPE одноименной компании, сервер приложений J2EE и средства размещения на указан-
40 Часть 1. Электронная коммерция
ном сервере созданных классов различных компонентов. Непосредст­венно для создания Java-приложений уровня предприятия можно вос­пользоваться любым интегрированным средством разработки (IDE), та­ким, как VisualAge for Java компании IBM или FORTE for Java компании SUN. Последний полностью создан самим создателем языка Java, на языке Java, двойная удача. Еще одним плюсом можно считать свободное распространение J2EE со всеми входящими в него утилитами и программами. Ну а если идти дальше, можно воспользоваться и Java Web-сервером опять же компании SUN, также полностью написанном на Java. И такой прекрасный тандем, да еще на новой версии JVM, име­нуемой в народе HOTSpot, да к тому же и бесплатно, т. е. слов нет. Кро­ме всего этого наплыва счастья на рынке, то ли на «горбушке», то ли мировом, представлены и другие производители программного обеспе­чения, предлагающие свои решения создания Web-приложений на язы­ке Java.
Сам J2EE-сервер имеет встроенную возможность управлять вирту­альной машиной (JVM), на которой работает, что дает возможность разработчику работать с заранее определенным количеством потоков, часть из которых можно направить на обработку http-запросов, а
Рис. 1.3. Графический интерфейс утилиты размещения компонентов
на J2EE-сервере