История развития программного обеспечения

Java как центр архипелага

Введение

Когда говорят и пишут о Java, самой популярной фразой является "мир сошел с ума". Действительно, и скорость, и характер распространения (так и хочется вспомнить лексикон недавнего прошлого и сказать о "победном шествии") Java не имеют аналогов. При появлении альфа-версии продукта выстраивается очередь на его лицензирование (рис. 1). Бета-версия становится инструментом реализации информационных систем крупных корпораций. Акции компаний, имеющих прочные позиции в Интернет, растут, как на дрожжах. Все бросились реализовывать WWW-навигаторы с поддержкой Java и борются за право передать их в бесплатное использование как можно большему числу клиентов. Идет сражение за долю будущего рынка, контуры которого пока только намечаются, сражение с применением средств, которые с точки зрения "здравого бизнеса" иначе как бредовыми и назвать нельзя.

Они хотят лицензировать технологию Java (снимок сделан на острове Ява)

Они хотят лицензировать технологию Java (снимок сделан на острове Ява)

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

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

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

Интернет, WWW и Интранет

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

Типичной является ситуация, когда инициатива принадлежит поставщику, а не потребителю информации. Поставщик по определенному поводу создает информацию и направляет ее всем, кто, по его мнению, в ней нуждается (рис. 2).

Доставка информации по инициативе поставщика

Доставка информации по инициативе поставщика

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

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

Централизованные компьютерные системы, доминировавшие еще 10 лет назад, позволяли пользователям сравнительно легко находить информацию в оперативном режиме (рис. 3), однако они затрудняли управление информацией, поскольку ее источники, как правило, разнородны и территориально разнесены. Еще один важный недостаток централизованных систем – их сложность и дороговизна. Подавляющему большинству российских организаций они просто не по карману.

Взаимодействие с централизованной компьютерной системой

Взаимодействие с централизованной компьютерной системой

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

Получение информации из сети персональных компьютеров

Получение информации из сети персональных компьютеров

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

Универсальный клиент Web-сервиса

Универсальный клиент Web-сервиса

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

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

Таким образом, Web-серверы и Web-навигаторы могут и должны использоваться не только в "мировом масштабе". Web – это инфраструктурный сервис, необходимый каждой организации со сколько-нибудь заметными информационными потоками.

В то же время, Web-сервису присущи и определенные недостатки, вытекающие из отсутствия объектной ориентации и из природы HTTP-протокола. Во-первых, клиент по существу лишен средств управления внешним представлением объектов на просматриваемой WWW-странице.

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

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

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

Java, Joe, NEO

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

С целью решения перечисленных проблем были приняты, помимо интеграции с Web-навигатором, два других важнейших постулата:

  • Была специфицирована виртуальная Java-машина, на которой должны выполняться (интерпретироваться) Java-программы. Определены ее архитектура, представление элементов данных и система команд. Исходные Java-тексты транслируются в коды этой машины. Тем самым, при появлении новой аппаратно-программной платформы в портировании будет нуждаться только Java-машина; все программы, написанные на Java, пойдут без изменений.
  • Определено, что при редактировании внешних связей Java-программы и при работе Web-навигатора прозрачным для пользователя образом может осуществляться поиск необходимых объектов не только на локальной машине, но и на других компьютерах, доступных по сети (в частности, на WWW-сервере). Найденные объекты загружаются, а их методы выполняются затем на машине пользователя.

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

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

Здесь уместно отметить замечательную точность в выборе основных посылок проекта Java. Из минимума предположений вытекает максимум новых возможностей при сохранении практичности реализации.

В то же время, интеграция с WWW-навигатором и интерпретируемая природа Java-среды ставят вполне определенные рамки для реального использования Java-программ (хотя, конечно же, язык Java не менее универсален, чем, скажем, C++). Например, известно, что интерпретация, по сравнению с прямым выполнением, на 1-2 порядка медленнее. Применение компиляции "на лету" и специализированных Java-процессоров, несомненно, улучшит ситуацию, но пока использование Java на серверной стороне представляется проблематичным.

Далее, хотя технология Интранет, основанная на использовании Web-сервиса в качестве информационной основы организации, является огромным шагом вперед, существуют и другие сервисы, как унаследованные, так и современные (например, реляционные СУБД), которые обязательно должны входить в состав корпоративной системы. Если вся связь между клиентами и упомянутыми серверами будет осуществляться через сервер WWW, последний станет узким местом, а решения Интранет рискуют лишиться такого важнейшего достоинства, как масштабируемость. Значит, необходима прямая связь между клиентскими системами, написанными на языке Java, и произвольными сервисами (рис. 6).

Прямая связь между Java-клиентами и корпоративными серверами

Прямая связь между Java-клиентами и корпоративными серверами

Как реализовать такую связь?

В общем виде ответ очевиден – нужны средства для полноценной интеграции Java в распределенную объектную среду. На серверной стороне компания Sun Microsystems имеет соответствующую технологию – NEO (NEtworked Objects, сетевые объекты). Технология NEO удовлетворяет спецификациям OMG (Object Management Group), являющимся промышленным стандартом. При реализации корпоративных информационных систем с использованием NEO наиболее естественным представляется использование трехуровневой архитектуры с серверами приложений, построенными на объектных принципах, на втором уровне и с базовыми и унаследованными серверами на третьем уровне (рис. 7).

Трехуровневая архитектура корпоративной информационной системы

Трехуровневая архитектура корпоративной информационной системы

К сожалению, столь общий ответ никак не помогает осуществлять прямую связь между Java-клиентом и NEO-сервером. Конечно, можно воспользоваться стандартными средствами программирования в сетевой среде (а Java допускает использование библиотек, написанных на C/C++, равно как и вставку машинных кодов), но если бы это было единственной возможностью, Java рисковала остаться на уровне "оживлялок".

В конце марта компания SunSoft объявила о появлении нового продукта с именем Joe, как раз и предназначенного для существенного облегчения встраивания Java-клиентов в информационные системы Интранет, построенные в трехуровневой архитектуре с использованием среды NEO (рис. 8).

Распределение ролей между Java, Joe и Neo

Распределение ролей между Java, Joe и Neo

Таким образом, сложилась полная и изумительно красивая картина организации современных Интранет-систем.

< . . . >

Заключение

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

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

В сочетании с продуктами Sun Microsystems – Joe и NEO – Java обеспечивает распространение концепции Интранет на произвольные сервисы, что открывает реальную возможность создания корпоративных информационных систем нового поколения.

Статья опубликована в журнале Jet Info, №9, 1996 г. Фрагмент статьи перепечатывается с разрешения редакции.