Глава 3

Встечайте брокеров CORBA/Java

CORBA/Java ORB возникают повсюду. В своем натиске производители поставляют ORB на рынок, даже не ожидая официальных спецификаций OMG для связи Java с архитектурой CORBA. Представляется, что поставщики льют воду на мельницу Java. Итак, что представляют собой CORBA/Java ORB? Это CORBA IIOP ORB, написанные на Java для обеспечения переносимости. ORB должны быть способны генерировать связи на языке Java из CORBA IDL. Кроме того, любой код, сгенерированный компилятором IDL, должен быть на чистом Java; у вас доджна быть возможность загрузить такой код и запустить его на выполнение на любой машине, содержащей среду выполнения Java.

Обычный аплет Java, содержащий Java ORB, может непосредственно вызывать методы объектов CORBA, используя протокол IIOP поверх Internet. Такой аплет полностью обходит CGI и HTTP, т.е. клиент и сервер устанавливают прямое коммуникационное соединение с помощью ORB. Вы можете загрузить клиента, который является CORBA - совместимым аплетом, в любой навигатор, поддерживающий Java, а затем его запустить. Такие загружаемые Java ORB еще называют ORBлетами.

Где вы могли бы получить один из таких CORBA/Java ORB? Если мы обратимся к публикациям, то обнаружим три ORB, более или менее удовлетворяющих нашему определению: Sun Joe, Iona OrbixWeb и Visigenic Netscape VisiBrokerfor Java (известный ранее как Black Widow). Здесь мы обсудим основные особенности трех этих продуктов. Мы также кратко остановимся на некоторых не-Java CORBA ORB. Нам кажется, что через несколько лет все основные поставщики CORBA будут предлагать Java ORB поверх IIOP. Итак, вы хотите узнать, кто эти поставщики.

Sun Joe

Sun - создатель Java - была одним из шести членов-основателей OMG. Следовательно, представление компании Sun об архитектуре клиент/сервер всегда таково — «распределенные объекты повсюду». Как вы могли бы предположить, интеграция CORBA и Java - горячая тема повестки дня Sun. С точки зрения Sun вы можете использовать объектный Web для разработки всех приложений клиент/сервер, включая рабочие группы, intranet и Internet. В этом разделе мы сначала представим краткую историю усилий Sun по интеграции CORBA/Java. Затем рассмотрим особенности системы Joe.

NEO и Joe: краткая история

В сентябре 1995 Sun анонсировала NEO — трехзвенную архитектуру клиент/сервер, которая объединила вместе Java, объекты CORBA и Web. Аббревиатура NEO не означает ничего конкретного. Система NEO включает: 1) NEOnet CORBA ORB (ранее известный как DOE), 2)клиентские среды Java и OpenStep, 3) структуру управления распределенными системами Solstice, 4) инструментальные средства разработки клиент/сервер.

В январе 1996 на заседании OMG в Сан-Диего Sun первой ввела связи CORBA IDL для Java, а также анонсировала Java ORB под именем Joe. В мае 1996 Sun (или JavaSoft) анонсировала Joe теперь уже как часть Enterprise Java — ядра структуры Java. Это означает, что Joe будет встроен в будущие виртуальные машины Java. В июле 1996 JavaSoft выпустила первую широко доступную бета-версию Joe. В ноябре 1996 JavaSoft декларировала Joe как «официальный» Java ORB для корпоративных систем. В декабре 1996 JavaSoft анонсировала систему Java Transactions, основанную на сервисе объектных транзакций CORBA.

Что такое Joe?

В первую очередь Joe - это клиентский Java ORB. Это означает, что вы можете загрузить ОРВлет вместе со своим аплетом, а затем использовать его для вызова серверных объектов на NEO ORB. Естественно, вы можете раз и навсегда установить код Joe на свою машину и таким образом избежать его загрузки с каждым аплетом. В настоящий момент в области middleware Sun ориентируется на продукты своих партнёров, а именно VisiBroker (Inprise) и Orbix (Iona). Вместе с тем Sun встраивает Java IDL в JDK.

Клиенты Joe могут принимать асинхронные вызовы от сервера с помощью сервиса обратного вызова . Чтобы принять обратный вызов, аплет Java должен: 1) определить объект CORBA посредством IDL, 2) создать экземпляр данного объекта, и 3) экспортировать серверу ссылку на объект. Удаленный сервер может связаться с этим аплетом, просто вызвав какую-либо операцию по ссылке на объект. Вызов передается затем клиенту Joe, как вызов обычного метода Java.

Joe содержит также компилятор IDL-в-Java, который автоматически генерирует стаб клиентского класса Java из стандартных файлов CORBA IDL. В настоящий момент серверные объекты должны быть написаны для платформы NEO ORB. Согласно публикациям, клиенты Joe могут общаться только с объектами NEO. Это ограничение очевидно, поскольку NEO работает только на Sun Solaris. Более того, NEOпoддepживaемый только серверные объекты, написанные на С или C++. Таким образом Java со стороны сервера не существует.

Обратные вызовы

Итак, что такое обратный вызов? Это вызов клиента сервером. Обратный вызов меняет ролями клиента и сервера, он разрешает клиенту стать сервером. Обычно CORBA ORB является как клиентом, так и сервером. Следовательно, любой клиент автоматически может принимать обратные вызовы. Любой сервер, имеющий ссылку на клиента с обратным вызовом, может удаленно его вызвать.

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

Iona - лидирующий поставщик технологий CORBA. С++ Orbix ORB этой компании в настоящее время работает на 20 операционных системах, включая 12 вариантов Unix, OS/2, NT, Windows 95, Macintosh System 7.5, OpenVMS и MVS.Iona ORB поддерживают как протокол IIOP, так и собственный протокол Orbix. А также разработка IONA — Orbix СЗ, Containers, Components and Connectors (Контейнеры, Компоненты и Коннекторы), в которую включены средства мониторинга транзакций Orbix ОТМ, OrbixCOMet - двусторонний мост CORBA — СОМ и EJBHome (Enterprise Java Beans). СЗ включает в себя ART - специальную системную компонентную архитектуру, Warhol - брокер сообщений, Matisse - графические средства создания серверных компонентов. Эта версия практически полностью поддерживает CORBA, а именно РОА (Portable Object Adapter), IIOP1.2, асинхронный обмен сообщениями, вызов объекта-по-значению.

Что такое Orbix Web?

Orbix Web V1 - Java - реализация клиента Orbix CORBA ORB компании Iona. Это облегченный ORB, который может поставляться через Internet в форме байт-кодов. OrbixWeb позволяет Java аплетам и клиентским приложениям взаимодействовать с серрером Orbix, используя или протокол CORBA IIOP, или более старый протокол Iona Orbix. Клиенты могут формировать как статические, так и динамические вызовы. OrbixWeb основан на IIOP. Следовательно, вы должны иметь возможность нзаимодействовать с серверными объектами через любое ORB, поддерживающие IIOP.

Inprise (Visigenic) VisiBroker for Java

VisiBroker начал свое существование как Black Widow ORB компании PostModern. Он был первым CORBA ORB, который поддерживал как клиентские, так и серверные объекты Java. Этот ORB написан полполностью на Java, что делает, его загружаемым ORBлетом. В начале 1996 PostModern была приобретена компанией Visigenic — лидером среди поставшиков ППО для БД. В июле 199б Visigenic изменила имя Black Widow на VisiBroker for Java, а C++ Orbeline ORB компании PostModern теперь называется VisiBrokerfor C++. В июле 1996 Netscape объявила, что ее инициатива Netscape ONE будет использовать VisiBroker for Java как свой ORB. Netscape встроит VisiBroker во нее свои будущие навигаторы и серверы. Наконец, в феврале 1997 Oracle объявила, что будет использовать VisiBroker как свой ORB, который станет базисом для NCA. В апреле 1998 года компания Visigenic была приобретена фирмой Borland. Всего за один 1998 год VisiBroker стал частью всего набора инструментальных средств Inprise - Borland JBuilder, Borland C++Builder и Borland Delphi (привычное имя Borland стало торговой маркой, ассоциированной с инструментальными средствами той же компании с новым именем — Inprise). Таким образом, разработчики получают не менее широкий спектр средств для создания CORBA приложений, чем существует для Microsoft СОМ.

Что такое VisiBroker for Java?

VisiBroker for Java представляет собой CORBA-совместимый клиентский и серверный ORB, написанный полностью на Java. Все VisiBroker ORB полностью реализуют протокол IIOP, который облегчает объектам С++ вызов методов объектов Java, и наоборот. VisiBroker for Java поддерживает как статические, так и динамические вызовы методов CORBA. Методы сервера могут вызываться клиентскими приложениями Java или аплетами изнутри навигатора. Если навигатор поддерживает, то аплеты могут использовать Secure Sockets.

VisiBroker for Java содержит полный Репозитарий Интерфейса CORBA (Interface Repository), написанный на Java. В конечном варианте Visigenic намерена реализовать полную спецификацию OMG связей CORBA с Java. Компилятор IDL из состава VisiBroker генерирует код скелетона серверных объектов на C++ или Java, кроме того, он генерирует Java-стабы для клиента.

VisiBroker for Java поставляется с сервисом устойчивых объектных именований, который назван OSAgent (Smart Agent). Множество операционных агентов (OSAgent), выполняющихся в одной сети автоматически находят друг друга и делят пространство имен между собой. Это позволяет вам копировать и выравнивать загрузку объектов на различные серверные машины. В случае сбоя ORB автоматически перенаправляет клиентские вызовы на одну из копий. VisiBroker for Java ORB реализован в менее чем 100 Кбайтные байт-коды Java. Следовательно его легко можно загрузить на клиентскую машину, если его еще там нет. Этот ORB поддерживает как клиентские, так и серверные функции, что означает, что любой клиент может использовать обратные вызовы. VisiBroker поддерживает также Caffeine — Pure Java средства разработки поверх CORBA/IIOP. Caffeine делает CORBA прозрачной для Java-программистов. Java-объекты могут вызывать другие объекты на CORBA IIOP ORB без необходимости использовать IDL.

VisiBroker и Netscape ONE

Netscape Open Network Environment (ONE) - стандартизованная платформа (и инструментальные средства) для создания нового поколения распределенных приложений клиент/сервер для Internet. Моделью распределенных объектов для этой новой платформы является CORBA IIOP. CORBA будет использоваться для интеграции Java-клиентов, Java-cepверов и инструментальных средств Java.

Согласно Netscape «IIOP раскрывает мощь сетевых приложений, обеспечивая открытый платформо-независимый протокол для взаимодействия сетевых приложений. Благодаря IIOP корпорации могут постепенно показывать и обеспечивать взаимодействие своих приложений не только позади своих брандмауэров, но и через Extranet на электронных рынках, среди потребителей, а также для других компаний. Приложения Netscape ONE будут использовать протокол IIOP в качестве базового для обеспечения доступа к сервисам CORBA и IIOP-совместимым корпоративным приложениям, например, бизнес-объектам, EDI и сервисам транзакций.»

Netscape Internet Foundation Classes предоставят платформо-независимыe сервисы для приложений Netscape ONE, написанных на Java JavaScript (Internet Foundation Classes были объединены с проектом новых библиотек JavaSoft и стали основой инфраструктуры классов Swing, ставшей составной частью платформы Java 2). У вас должна быть возможность вызвать любой объект CORBA с помощью JavaScript. Идея состоит в том, чтобы создать высокопроизводительные приложения клиента и сервера на Java, а затем использовать JavaScript для создания сценариев, если в этом еще будет необходимость. Любой IDL-распределенный объект CORBA должен быть совместим с JavaScript.

Который из Java ORB?

В таблице 1 сравниваются Java ORB. Каждый из них имеет сильных сторонников: Joe поставляется с каждым Java Development Kit; VisiBroker поставляться с каждым навигатором Netscape и сервером Oracle; OrbixWeb продается компанией Iona — лидирующим поставщиком ORB.

Таблица 1. Сравнение Java CORBA ORB

Свойство CORBA

OrbixWeb

Joe

VisiBroker fo Java

Java со стороны клиента

Да

Да

Да

Вызов статических методов

Да

Да

Да

Вызов динамических методов

Да

Нет

Да

Интерфейс Репозитарий

Да

Нет

Да

Серверные обратные вызовы

Да

Да

Да

"Родной" Java на IIOP

Нет

Нет

Да (Caffeine)

Java со стороны сервера

Да

Нет

Да

Поддержка рынка

Да

Да

Да

 

Другие CORBA ORB

ORB от поставщиков больших систем включают Digital ObjectBroker IBM SOM (сейчас эта технология частично трансформировалась в ComponentBroker и WebSphere), Sun NEO/Joe, Oracle Web Reques Broker (теперь этот продукт стал составной частью нового продукта Oraccle Application Server на основе Inprise VisiBroker), ICL DAIS и HP ORB Plus. ORB от разработчиков новых решений включают Expersoft PowerBroker, Iona Orbix и Inprise VisiBroker. Этот список не претендует на полноту. Вдобавок к перечисленному мир CORBA включает буквально сотни продуктов, которые построены поверх middleware ORB, как то инструментальные средства клиент/сервер, системы публикации-подписки, библиотеки компонентов, ОСУБД и системы управления платформами.

Самое приятное в CORBA - у вас всегда есть выбор из более чем одного ORB. Конкуренция на этом рынке огромная. Здесь мы завершаем большое путешествие. Да, настало время перейти к некоторым подробностям. Если вас интересует только общий обзор, переходите к концу реферата.


назад | содержание | далее