Научная статья на тему 'Использование Java-технологии в интернет-приложениях'

Использование Java-технологии в интернет-приложениях Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
495
61
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — С. А. Онищенко

Рассматриваются Java-технологии как инструмент для создания и поддержания Интернет-проектов. Основное внимание уделяется использованию Java в серверной части программных продуктов. Приведен пример создания Интернетпредставительства на основе Java-сервера JServ.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The article considers Java technologies as a tool for building and maintaining Internet-based projects. Major impact is done on using Java in server-side software. The article provides an example of Web-site built on Apache JServ Java server.

Текст научной работы на тему «Использование Java-технологии в интернет-приложениях»

тезе минимальных конфигураций. В этом случае задается топология иерархической сети минимальной сложности. Как следует из рассмотренного, вектор настройки

сети д = |а0, а0, ..., а0„| определяется лишь исходной булевой функцией у = ДХр ..., хп) и не зависит от матрицы состояний МС. Это позволяет использовать вектор настройки сети минимальной конфигурации и для избыточной сети. В таких сетях, для сокращения количества внешних настроечных входов целесообразно в первом уровне использовать компоненты вектора д в качестве единичных экземпляров настроечных констант, умноженных на соответствующие значения т*0 и £*0 .

3 ВЫВОДЫ

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

дование структуры и свойств базисных элементов. Это позволяет использовать способ введения структурной избыточности, исследованный в [5], для построения надежных многофункциональных управляющих логических устройств, реализованных в виде СБИС. Предполагается, что вопросы синтеза таких избыточных перестраиваемых логических сетей будут рассмотрены в отдельных публикациях.

ПЕРЕЧЕНЬ ССЫЛОК

1. Галушкин А.И., Кирсанов Д.В. Цифровые нейрочипы: (специализированные цифровые БИС для нейрокомпьютеров)// Зарубежная радиоэлектроника, 1999, №1, С. 17-37.

2. Алексеев А.А., Дорогов А.Ю., Пименов В.Е. Структурный синтез нейронных сетей для СБИС реализации // Нейроин-форматика и ее приложения: Тез. докл. 7 Всерос. семинара, 1-3 окт. 1999 г. - Красноярск: КГТУ, 1999. - С. 12.

3. Лавренюк А.Ф. Нейроподобные модули нейросетевых процессоров // Нейроинформатика и ее приложения: Тез. докл. 7 Всерос. семинара, 1-3 окт. 1999 г. - Красноярск: КГТУ, 1999. - С. 89.

4. Лопин В.Н. Исследование одного класса нейронных сетей с конвейерной обработкой информации // Автоматика и вычислительная техника, 1999, №5, С.80-84.

5. Лопин В.Н. Анализ формально-логической модели нейрона с помощью дискретного пространства состояний // Автоматика и вычислительная техника, 1999, №6, С.54-58.

Надшшла 10.03.2000 Шсля доробки 21.03.2000

УДК 681.3.06

ИСПОЛЬЗОВАНИЕ JAVA-ТЕХНОЛОГИЙ В ИНТЕРНЕТ-ПРИЛОЖЕНИЯХ

С. А. Онищенко

Рассматриваются Java-технологии как инструмент для создания и поддержания Интернет-проектов. Основное внимание уделяется использованию Java в серверной части программных продуктов. Приведен пример создания Интернет-представительства на основе Java-сервера JServ.

Розглядаються Java-технологп як тструмент для побу-дови й тдтримки 1нтернет-проект1в. Основна увага прид1ля-еться використанню Java у сервернт частит програмних продукт1в. Наведено приклад створення 1нтернет-представ-ництва на основ1 Java-серверу JServ.

The article considers Java technologies as a tool for building and maintaining Internet-based projects. Major impact is done on using Java in server-side software. The article provides an example of Web-site built on Apache JServ Java server.

ВВЕДЕНИЕ

По прогнозам специалистов при существующих темпах развития Интернет рискует обойти по популярности не только печатные издания, но и телевидение. Создание своего представительства в Интернет становится правилом хорошего тона. К сожалению, такой аспект как поддержание веб-проектов, как правило, упускается из виду. Для обеспечения качественного контента (напол-

нения) веб-сайтов используются различные технологии динамического создания страниц - CGI-скрипты, PHP, SSI и т.п. Зачастую модули динамического создания страниц, в свою очередь, обращаются к различным репо-зитариям (базы данных, базы знаний, экспертные системы). Как утверждают специалисты компании Sun [1], технология Java пригодна не только для создания апле-тов, которые исполняются на клиентской стороне (в броузере обозревателя). Гибкий и простой интерфейс серв-летов (Servlet API) позволяет использовать всю мощь Java в серверных приложениях. Все преимущества Java, которые выделяют этот язык среди прочих средств программирования, свидетельствуют в пользу Java как инструмента для создания серверов.

ПОСТАНОВКА ЗАДАЧИ

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

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

Самым трудоемким этапом разработчика интернет-приложений является реализация шлюза между интерфейсом клиента (клиентом, как правило, выступает броузер: Netscape Navigator, Opera, Lynx, Internet Explorer) и долговременным хранилищем данных на сервере (файлы, базы данных, базы знаний). В последнее время было разработано несколько схем и методик создания веб-серверов на базе Perl, PHP, ASP, SSI. Все эти языки и методики используют стандартный CGI-интерфейс (Common Gateway Interface) для получения параметров от клиента при динамическом формировании HTML-страниц. Одним из наиболее перспективных серверных средств на данный момент являются Java-сервлеты.

JAVA-СЕРВЛЕТЫ

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

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

Программы-клиенты, которые обращаются к сервле-там, могут отличаться по сложности. Клиентом может выступать как простая HTML форма, так и Java-аплет. На рис.1 представлена схема взаимодействия HTTP-клиентов (аплеты, HTML-формы) с Java-сервером, в контексте которого выполняются сервлеты.

С точки зрения разработчика сервлет - это Java-класс. Сервлет реализует функции интерфейса Servlet API [1], как правило, расширяя класс GenericServlet или его модификацию - класс HttpServlet. Простейший сервлет переопределяет один метод класса GenericServlet - service:

import java.servlet.*;

public class MyServlet extends GenericServlet { public void service (

ServletRequest request, ServletResponse response

) throws ServletException, lOException {

}

Рисунок 1 - Взаимодействие HTTP-клиентов с сервлетами

Если в качестве базового класса при создании сервле-та используется HttpServlet, то необходимо предопределить реакцию сервлета на HTTP запросы POST, GET, HEAD при помощи переопределения функций doPost(), doGet() и doHead(), соответственно.

Сервлеты всегда загружаются в оперативную память динамически. Администратор сервера также имеет возможность принудительно загружать и инициализировать определенные сервлеты при запуске Java-сервера (startup). Сервлеты загружаются в память машины при помощи обычного загрузчика классов Java. При этом серв-лет может располагаться как на локальной файловой системе, так и в удаленных каталогах, например, в каталоге http://some.host.com/servlets. Этим достигается гибкость системной архитектуры и обеспечивается распределение сервисов в сети.

ЗАДАЧИ, РЕШАЕМЫЕ ПРИ ПОМОЩИ СЕРВЛЕТОВ

Сервлет, как правило, обрабатывает информацию, которая поступает на сервер по протоколу HTTP в результате отправки данных какой-либо HTML формы. Так как сервлеты могут одновременно обрабатывать несколько запросов, происходит синхронизация запро-

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

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

При использовании методики CGI (рис. 2а) каждый запрос, приходящий на сервер из мира, обрабатывается отдельным системным процессом, который порождается главным процессом (веб-сервер). Когда применяется технология Fast-CGI (рис.2б), все запросы для CGI-модулей перенаправляются в отдельный системный процесс, который их обрабатывает. Если запросы не поступают, то этот процесс завершается (разрушается системой). С приходом очередного запроса процесс инициализируется (создается) вновь. Операции создания и разрушения процессов, как известно, отбирают время и системные ресурсы. Использование Java-сервера (рис.2в) позволяет избежать этих затрат, так как в системе всегда присутствует процесс, готовый в любую минуту принять запрос и обработать его. Этот подход имеет еще одно преимущество - любой операционной системе удобнее следить за одним процессом, чем за многими. В связи с этим повышается надежность работы сервера в целом.

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

Первым уровнем трехуровневой Интернет-модели являются броузеры (желательно с поддержкой Java). Сложные задачи, требующие расширенные возможности интерфейса, решаются при помощи Java-аплетов. Более тривиальные - при помощи обыкновенных HTML форм.

Вторым уровнем являются сервлеты, которые реализуют бизнес-правила и логику приложений.

Третий уровень - это репозитарии данных. Доступ к элементам (серверам) третьего уровня осуществляется

через интерфейсы реляционных баз данных (JDBC, ODBC) или посредством других интерфейсов и протоколов, таких как ONC RPC, DCE RPC или CORBA/ IIOP (рис.3).

а)

б)

в)

Рисунок 2 - Сравнение работы сервлетов с работой CGI и Fast-CGI

Рисунок 3 - Трехуровневая модель с использованием Java-сервера

Интерфейс сервлетов описывается в стандарте Java Servlet API [1] от компании SUN. Этот интерфейс поддерживается несколькими веб-серверами, среди которых самый популярный в мире [3] веб-сервер Apache.

Apache JServ - это сервер, обеспечивающий работу сервлетов (servlet engine), полностью написанный на Java и полностью совместимый с интерфейсом JavaSoft Java Servlet APIs 2.0 [4]. Благодаря своей портативности сервер JServ 1.0 способен функционировать на всех виртуальных Java-машинах (JVM) версии 1.1 и выше и обслуживать все сервлеты, которые поддерживают интерфейс Java Servlet API версии 2.0. В целях минимизации зависимости от какой-либо определенной платформы, JServ реализован в виде отдельного сервера (процесса-демона), который общается с другими серверами посредством специального сетевого протокола AJP [5]. Apache JServ поддерживает несколько модулей расширения, среди которых Apache JSSI, Cocoon, GNU Java Server Pages, WebMacro Java Servlet Toolkit. Apache JServ способен работать под управлением различных операционных систем.

ПРИНЦИПЫ ПОСТРОЕНИЯ И РАБОТЫ

СИСТЕМЫ

В качестве примера веб-сайта, разработанного с применением Java-технологий, предлагается рассмотреть сайт журнала "Радиоэлектроника. Информатика. Управление", который располагается по адресу http://www. zstu.edu.ua/RIC/. В качестве серверной ОС был выбран клон UNIX - FreeBSD 4.0-STABLE. В качестве вебсервера использовался Apache/1.3.6 (Unix) rus/PL28. 16. В качестве СУБД - MySQL server version 3.22.25. Все эти программные продукты (включая саму ОС FreeBSD) распространяются бесплатно в исходных текстах по лицензии GPL [6]. Широкое использование этих продуктов профессионалами во всем мире гарантирует их надежность и обеспечивает качественную поддержку.

Так как на сайте присутствует информация на трех языках (украинский, русский, английский), кодовой страницей для хранения и обработки данных на сервере была выбрана KOI8-U [7]. Кодировка, в которой данные отдаются клиенту, выбирается динамически средствами расширения веб-сервера Apache - RA (Russian Apache), исходя из заголовков HTTP-запроса и типа агента (броузера) [8]. Задача динамического формирования веб-страниц была реализована при помощи Java-сервера ApacheJServ/1.0, JDK 1.1.8, JSDK 2.0, JSSI 1.0 [4]. Ограничение доступа к данным было реализовано средствами веб-сервера Apache (файл ограничений access.conf и утилита htpasswd).

Веб-сайт представляет собой набор .jhtml файлов, которые являются прототипами формируемых HTML-страниц. Получая запрос на файл с таким расширением, веб-сервер (в данном случае Apache) формирует свой запрос и посылает его Java-серверу (JServ) по протоколу AJP. Java-сервер инициализирует сервлет org. apache.ssi.SSIServlet, который просматривает исходный код jhtml-файла и исполняет сервлеты, запрашиваемые тэгами <SERVLET> ... </SERVLET>. Результат работы вызываемого сервлета подставляется на место его вызова в файл .jhtml. Во всем остальном .jhtml файл сходен с обыкновенным .html файлом, т.е. содержит чистый HTML-код. Сформированная страница отдается веб-серверу, а затем от него к клиенту.

Поведение запрашиваемых в теле .jhtml файла сервлетов зависит от параметров HTTP-запроса, передаваемых от клиента (из броузера), а также от параметров, заданных при помощи директив <PARAM name='...' value='...'> в теле исходного файла. Например:

<SERVLET code='MagazineSSI.class'> <PARAM name='mode' value='issue'> <PARAM name='text' value='$(date)'> <PARAM name='lang' value='rus'> </SERVLET>

В рассматриваемом примере используются два модуля (два сервлета) - MagazineSSI и MagazineAdminSSI, которые обеспечивают динамику на страницах сайта. Упрощенные блок-схемы модулей приведены на рис.4 и 5, соответственно.

Функции простой выборки и поиска (select) и администрирования (update, delete, insert) разнесены по разным модулям из соображений безопасности. Подключение к базе данных из модуля MagazineSSI не дает возможности модифицировать данные. Модуль Maga-zineAdminSSI, наоборот, обеспечивает практически полный доступ к статьям. Подключение к базе данных (MySQL) осуществляется при помощи драйвера JDBC twzl версии 1.0.4-GA. В зависимости от параметров, передаваемых сервлету, конструируется SQL-запрос. Он обрабатывается MySQL-сервером, его результаты возвращаются в сервлет, форматируются и отдаются в качестве HTML-страницы клиенту.

Модули MagazineSSI и MagazineAdminSSI принимают параметр lang, который определяет язык вывода -украинский, русский или английский. Формат вывода, как правило, определяется параметром text.

issuesQ

articlesQ

articleQ

sectionsQ

resultQ

конец

Рисунок 4 - Блок-схема модуля MagazineSSI

updatearticleQ

deletearticleQ

newissueQ

конец

Рисунок 5 - Блок-схема модуля MagazineAdminSSI

Администрирование веб-сайта (модификация данных, ввод новых статей) осуществляется через Интернет. В подкаталоге admin размещаются .jhtml файлы, которые вызывают сервлет MagazineAdminSSI. В модуле MagazineAdminSSI реализованы функции создания нового номера журнала в базе, добавления, редактирования и удаления статей. Доступ к подкаталогу admin ограничивается средствами самого веб-сервера. Каталог может быть доступен только определенному пользователю или группе пользователей (по паролю), или только с определенных адресов или подсетей (по IP-адресу).

На настоящий момент рассматриваемая система проработала 6 месяцев. Судя по визуальным наблюдениям и файлам-протоколам, нарушений в работе не было. В целях тестирования на отказ на веб-сайт журнала была проведена небольшая DOS-атака (denial-of-service attack), что, однако, не повлияло на стабильность работы сервера.

РЕЗУЛЬТАТЫ И ВЫВОДЫ

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

М. Ю. Сенашова: БЫСТРОЕ ДИФФЕРЕНЦИРОВАНИЕ СЛОЖНЫХ ФУНКЦИЙ МНОГИХ ПЕРЕМЕННЫХ

также гибкая настройка позволяют применять разработанную систему для поддержки веб-представительства практически любого печатного издания.

ПЕРЕЧЕНЬ ССЫЛОК

1. The Java Servlet API (http://java.sun.com/products/servlet/ whitepaper.html).

2. Морган M. Java 2. Руководство разработчика.: Пер. с англ. - М.: Издательский дом "Вильямс", 2000. - 720 с.

3. The Netcraft Web Server Survey (http://www.netcraft.com/ survey/).

4. The Apache JServ Project (http://java.apache.org/jserv/).

5. Apache JServ Protocol Version 1.1 (AJPvl.1) (http:// java.apache.org/jserv/protocol/AJPv11.html).

6. GNU General Public License (GPL) (http://www.gnu.org/copy-left/gpl.html).

7. RFC2319 - Ukrainian Character Set KOI8-U (ftp://ftp.isi.edu/ in-notes/rfc2319.txt)

8. Russian Apache: Как это работает (http://apache.lexa.ru/ internals.html).

Надшшла 23.02.2000 Шсля доробки 22.03.2000

УДК 681.32:007

БЫСТРОЕ ДИФФЕРЕНЦИРОВАНИЕ СЛОЖНЫХ ФУНКЦИЙ МНОГИХ

ПЕРЕМЕННЫХ

М. Ю. Сенашова

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

The grafs of calculation of composite functions of many variables are described. Principle of duality for calculation of gradient and second derivative of composite function is stated. Class of functions with the most simple calculation of gradient is determined. (Besides the neural networks it includes the extremely simple circuits of a more general kind).

ВВЕДЕНИЕ

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

dF .. -.-, „

ности д— (i = 1, n) немногим сложнее, чем одной из

dxi

этих функций - они все собраны из одинаковых блоков. Частным случаем такого рационального подхода к вычислению градиента является метод обратного рас-

пространения ошибки [1].

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

1 ВЫЧИСЛЕНИЕ ВТОРЫХ ПРОИЗВОДНЫХ

СЛОЖНЫХ ФУНКЦИЙ МНОГИХ

ПЕРЕМЕННЫХ

Рассматривается сложная функция многих переменных Г. Под "сложной" функцией подразумевается, что Г может быть представлена как суперпозиция некоторого набора "простых" функций ( от меньшего числа

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

п

налов градиента Г, например от Ф(атаёГ) = V ^^.

^ Э

{ = 1

Рассмотрим процесс вычисления вторых производных функции Г. Этот процесс состоит из трех этапов: на первом этапе строится граф прямого функционирования и вычисляется сама функция Г, на втором этапе строится граф для вычисления ее градиента (граф первого обратного функционирования), и, наконец, на третьем этапе строится граф для вычисления градиента от функционала градиента ("обратно-обратное" функционирование).

Перейдем к более подробному описанию этапов вычисления производных.

Первый этап

Для построения графа, вычисляющего сложную фун-

i Надоели баннеры? Вы всегда можете отключить рекламу.