Ж у р н а л   о   к о м п ь ю т е р н ы х   с е т я х   и   т е л е к о м м у н и к а ц и о н н ы х   т е х н о л о г и я х
СЕТИ И СИСТЕМЫ СВЯЗИ on-line
  ПОИСК: ПОДПИСКА НА НОВОСТИ: НОМЕР:
    ДОМОЙ • Архив: Новостей | Конференций | НомеровПодписка
 
   
 
   
    
РЕДАКЦИЯ
 
Все о журнале
Подписка
Как проехать
Где купить
Отдел рекламы
График выхода журнала
Адреса в Интернет

РУБРИКАТОР
   
• Инфраструктура
• Информационные
   системы

• Сети связи
• Защита данных
• Кабельные системы
• Бизнес
• Колонка редактора
• Электронная
   коммерция

• Только на сервере
• Системы
   учрежденческой
   связи

• Новые продукты


Rambler's Top100

  

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

Брайан Уолш

Широкая поддержка языка Java и относительная легкость разработки на нем программ послужили стимулом к его использованию в самых разных видах бизнеса. Web-приложения завтрашнего дня, такие, как потоки данных XML и сложные транзакции очень больших объемов, требуют надежных серверных решений.

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

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

Появление Java во многом облегчило задачу выбора клиентской платформы при реализации информационных систем: встроенные Java-классы, поддерживаемые браузером, уже имеются среди продуктов фирмы Microsoft или Netscape. Единственное ответственное решение, которое в этом случае нужно принять, — выбрать наиболее подходящую среду разработки IDE (Integrated Development Environment).

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

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

Хотя разные среды Java различаются между собой набором предоставляемых услуг, все они обязательно поддерживают базовые классы Java. В данной статье мы рассмотрим три альтернативных продукта для построения серверов Java-приложений: серверную машину Java в составе программного комплекса WebSphere фирмы IBM, сервер приложений GemStone/J для компонентной модели EJB, поставляемый фирмой GemStone Systems, и специализированную среду для Java, реализованную фирмой Oracle и базирующуюся на механизме хранимых процедур для ее сервера СУБД Oracle 8i. Эти продукты поставляются в разной комплектации и различаются способами внедрения, однако каждый поставщик все-таки старается поддерживать общераспространенные компоненты (так, и IBM, и Oracle поддерживают компонентную модель EJB).

Прежде чем принять решение об установке какого-либо комплексного фирменного продукта, попробуйте сначала воспользоваться повсеместно доступным ПО серверных приложений Java. Для этого нужно всего лишь подобрать соответствующую среду разработки и Web-сервер, который поддерживал бы Java-машину для серверных компонентов Java. Опасаясь навлечь на себя гнев тонких знатоков технологии, рискну сравнить интерфейс API для серверных приложений Java с интерфейсом CGI. Однако в отличие от сценариев CGI технология Java предоставляет связующую среду, т. е. каркас, позволяющий легко подключать новые объекты и многократно использовать уже имеющиеся. Интерфейс CGI не обеспечивает такой гибкой и стандартизированной инфраструктуры.

Серьезным преимуществом использования технологии Java на сервере является то, что она предоставляет унифицированные API и среду выполнения, не привязанные к какому-то одному поставщику, и в то же время позволяет избежать снижения производительности, характерного для интерфейса CGI при интенсивном обращении через него к серверным приложениям (каждое приложение Java запускается в качестве облегченного потока). Серверные Java-приложения выполняются в собственной виртуальной среде — так называемой песочнице, которая обеспечивает безопасность и возможность работы с прикладными службами. И поскольку виртуальная Java-машина выполняется как отдельный пользовательский процесс, ошибки в отдельных серверных приложениях, созданных на базе интерфейсов NSAPI/ISAPI (Netscape API/Internet Server API), не смогут привести к разрушению или остановке основного процесса Web-сервера. Кроме того, в распоряжении разработчика, выбравшего эту технологию, оказывается богатый набор классов, инструментов разработки и программных интерфейсов.

Модель построения информационной системы на базе серверных приложений Java имеет свои особенности. Одна из них — ограниченная производительность технологии. Однако, работая на сервере приложений, который одновременно является и Web-сервером, компоненты Java позволяют выполнять контекстно-зависимое переключение между Web-сервером и Java-машиной. Кроме того, приложения, использующие программные интерфейсы NSAPI/ISAPI, могут быть скомпилированы непосредственно в исполняемый код, что обеспечивает гораздо большее быстродействие программ, чем интерпретация байт-кода.

Механизм серверного приложения — это JVM, обеспечивающая работу Java-программ через API и протокол связи с процессом Web-сервера. API для серверных приложений состоит из двух пакетов: javax.servlet и javax.servlet.http. Виртуальная Java-машина для сервера приложений (она обычно запускается на том же Web-сервере) отвечает за загрузку ваших классов, а также за управление многопоточностью и клиентскими запросами. Серверная JVM создает экземпляры объектов, выполняет их настройку в соответствии с конфигурациями и организует сеансы связи. Она же выгружает отработавшие объекты и осуществляет операцию “сборки мусора”. Программный интерфейс для серверных приложений Java содержит простые объекты, обеспечивающие выдачу клиентам HTML-файлов, восстановление запросов клиентов и массу других вспомогательных функций: запрос персональной информации у клиента, отслеживание сеансов, управление многопоточностью и пр.

Стандартная Java-машина для серверных приложений обычно реализует базисные функции, такие, например, как поддержка сеансов связи и запрос персональной информации, в то время как стандартные Java-классы, в частности JDBC (Java Database Connectivity) — доступ к хранилищам корпоративных данных. Но что если вам нужно нечто большее? ПО WebSphere, впрочем, как и GemStone/J, расширяет базовые возможности сервера Java-приложений, предоставляя средства управления и конфигурирования, базовый набор обработки транзакций, а также службу кэширования объектов.

IBM WebSphere

Компания IBM решила поставлять свои службы по разработке и управлению соединениями вместе с продуктом Apache Web Server и назвала этот комплект WebSphere Application Server (WAS). Кроме Web-сервера, в комплекте содержатся дополнительные средства, позволяющие ему работать и с сервером IIS (Internet Information Server) фирмы Microsoft, и с браузером Navigator/Communicator фирмы Netscape.

WebSphere содержит несколько дополнительных средств, упрощающих разработку и управление серверными приложениями Java. По сравнению с теми удобствами, которые предоставляет ваша любимая среда разработки, условия отладки серверного приложения Java могут показаться возвратом к средним векам. Для того чтобы запустить сервер приложений в автономном режиме, WebSphere включает класс WASRunner, после чего для его отладки вы сможете использовать вашу привычную среду программирования.

Каждое из серверных приложений Java связано со своей конфигурацией, настраиваемой из программы Application Server Manager. Разработчики IBM создали специальный класс, который поддерживает эту информацию в виде документа XML. Она включает в себя наименование приложения, его описание и параметры настройки. Чтобы упростить создание и чтение этого документа, IBM поставляет два класса: PageListServlet и XMLServerConfig. Экраны консоли WebSphere упрощают администрирование и запуск заданий, позволяя отслеживать выполнение серверных приложений, текущие соединения, задействованные ресурсы и время отклика.

GemStone/J

Перед тем как использовать язык Java в качестве инструмента реализации компонентов информационной системы на большом предприятии, вы должны убедиться, что выбранная вами платформа сможет обеспечить необходимую производительность (возможности масштабирования и повышения быстродействия) и сократит ваши расходы по написанию программного кода и его поддержке. Сервер GemStone/J удовлетворяет сразу множество требований, предъявляемых к современному корпоративному серверу приложений, т. е. поддерживает серверные приложения на Java, компоненты

EJB и CORBA (Common Object Request Broker Architecture), а также технологию Distributed JavaBeans. Кроме того, он выполняет функции монитора транзакций, сервера безопасности, хранилища объектов и обеспечивает средства групповой работы, такие, как корпоративная связь и обмен сообщениями.

По желанию пользователя может быть включена опция, позволяющая сохранять экземпляры Java-объектов после их использования, что освобождает разработчиков от необходимости кодировать методы хранения, поиска и создания объектов. GemStone/J реализует это посредством специального кэширующего расширения своей виртуальной Java-машины.

Помимо запоминания объектов между их вызовами предлагаемая архитектура обеспечивает методы выдачи информации о состоянии приложения другим приложениям, запущенным на нескольких виртуальных Java-машинах. Серверные компоненты и компоненты JavaBeans могут быть размножены на нескольких JVM или даже на нескольких серверах для увеличения производительности приложения. На рис. 1 показана архитектура распределенных вычислений на базе совместно используемoй виртуальной Java-машины, применяемая в сервере GemStone/J.

Серверные приложения и компоненты Java часто используются для упорядочения данных, приходящих из самых разных источников (унаследованные системы, датчики, работающие в реальном времени, другие серверы и т. п.). Для упрощения этой задачи GemStone/J оформляет сеанс работы в виде транзакции. Монитор транзакций OTM (Object Transaction Monitor) обеспечивает процедуры запуска, двухфазной фиксации, отката и блокировки транзакции. Администратор сервера имеет возможность настраивать уровень управления такими транзакциями.

Oracle 8i

Несмотря на то что у фирмы Oracle есть сервер приложений как отдельный продукт, мы заинтересовались использованием языка Java в классическом сервере баз данных. Поскольку виртуальная машина Java входит в исполняемый модуль сервера Oracle 8i, она работает в его адресном пространстве и разделяет динамически распределяемую область памяти с ядром СУБД. Виртуальная машина Oracle поддерживает JDK 1.1.6. Все клиенты базы данных (например, средства формирования запросов, отчетов или полнофункциональные клиенты-приложения) могут вызывать хранимые процедуры, созданные на Java, точно так же, как и обычные хранимые процедуры. Благодаря такому сочетанию вы одновременно можете использовать большое число клиентов разных типов. Однако хранимая процедура на Java имеет существенное преимущество перед другими аналогичными средствами: она хранится в скомпилированном виде, автоматически кэшируется и, таким образом, запоминается на клиентах. Доступом к хранимым процедурам можно управлять, раздавая клиентам соответствующие полномочия на их загрузку.

Чтобы воспользоваться Java-методом в среде СУБД Oracle 8i, программист должен сначала создать класс в любой из доступных сред разработки. После этого требуется выполнить два дополнительных шага. Поскольку база данных должна быть “осведомлена”, какой из методов в классе может быть вызван из SQL-среды, программист делает описание вызова из процедурного языка PL/SQL фирмы Oracle, которое однозначно определяет, какие Java-методы можно вызывать из SQL-клиента. Затем он определяет типы передаваемых и возвращаемых параметров, соответствующих их SQL-двойникам . По аналогии с утилитами, загружающими данные в таблицы СУБД, утилита loadjava используется для загрузки класса в так называемую схему. Программисты, работающие на языке PL/SQL, могут вызывать их из конструкций любого языка, в том числе из стандартных SQL-функций в операторах select, update и insert. На рис. 2 показано, как происходит загрузка компонентов Java в базу данных.

Для доступа к базе данных из Java-классов используются стандартные JDBC-методы, что обеспечивает компактность кода и быстроту работы приложения, это стандартный способ обращения к базе данных из Java. Обычно методы JDBC применяются при удаленном доступе к СУБД. Фирма Oracle реализовала для своего сервера БД виртуальную Java-машину уже со встроенными классами JDBC. Таким образом, скорость обращений при использовании инструментов Oracle гораздо выше, чем при обычном удаленном доступе, благодаря особой реализации JDBC. Интерфейс JDBC в составе сервера СУБД обращается к основным внутренним библиотекам и памяти напрямую, поэтому и не страдает от дополнительных задержек в процессе сетевого доступа, организации связей между процессами или работы контекстных переключателей, каждый из которых требует времени. Все Java-классы оптимизированы фирмой Oracle — они скомпилированы непосредственно в исполняемый код для повышения быстродействия. Кроме того, следующая версия сервера БД будет включать в себя акселератор для перевода созданного пользователями кода в промежуточный код на языке Си, который, в свою очередь, будет компилироваться уже в исполняемый код.





  
13 '1999
СОДЕРЖАНИЕ

колонка редактора

• Интернет на плечах гигантов

локальные сети

• Особенности демаркационного пункта на границе общедоступной и корпоративной оптических сетей

• Кабельные тестеры: наперегонки со стандартами

• Сервисные пакеты Windows NT 4.0: береженого Бог бережет

• Библиотеки DLT среднего уровня

бизнес

• Венгерская рапсодия OCS

интернет и интрасети

• Технология Java: на сервере и на клиенте

• Java - достойный соперник или претендент в чемпионы

новые продукты

• FastNet - система контроля уровня обслуживания в сетях передачи данных, Платформа компьютерной телефонии фирмы "Беркут", С SurviveIT -- как за каменной стеной

корпоративные сети

• Технологии управления трафиком

• "Блуждающие" пользователи: все надежды на Web

• "Повзрослевшие" мониторы приложений

услуги сетей связи

• Новые возможности старых знакомых

• Пора открывать коды, или Новый виток развития маршрутизации

• Планирование сети GSM

• Доступ к Интернет на основе спутниковых технологий

• Сигнализация в сетях IP-телефонии. Часть I

защита данных

• Пограничный контроль: руководство по антивирусным шлюзам



 Copyright © 1997-2007 ООО "Сети и Системы Связи". Тел. (495) 234-53-21. Факс (495) 974-7110. вверх