Говоря более прозаически, Jini - это часть программной среды Java, работающая на «фундаменте» JVM и позволяющая устройствам динамически подключаться к сети и пользоваться возможностями всех имеющихся в ней остальных устройств. Sun мечтает о таком будущем, когда любое устройство с процессором и небольшой памятью сможет свободно общаться со своими «коллегами». Это смелая мечта, но, по крайней мере, мы чуть-чуть приближаем будущее, свободное от неразберихи драйверов устройств и неизбежных трудностей при регистрации в сети.

Jini Q&A

в вопросах и ответах

Что такое Jini?

Jini - это серьезный шаг к крупномасштабным распределенным вычислениям. Хотя он создается для разрешения проблем несовместимости сетевого оборудования, не менее важно и то, что он способен предоставить вычислительным устройствам и приложениям возможность эффективно взаимодействовать друг с другом по сети.

Каковы достоинства Jini?

Уменьшает трудности, связанные с администрированием сети, предоставляя возможности подключения в режиме plug-and-play различных устройств, таких как ПК, карманные компьютеры или сотовые телефоны; для работы ПО требуется всего 48 Кбайт памяти; опирается на объектно-ориентированные возможности языка Java.

Недостатки, присущие Jini?

Разработчикам придется немало потрудиться для реализации сетей на основе технологии Jini; написание распределенных приложений намного сложнее создания их монолитных аналогов.

Информация для разработчиков и спецификации

Web-страница на сервере Sun Microsystems, посвященная Jini: http://java.sun.com/products/jini.

  
К примеру, в новом мире Sun пользователю будет достаточно подключить PalmPilot в разъем сети, и об этом сразу станет известно: карманный компьютер автоматически превратится в часть сети.

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

Данная концепция архитектуры распределенных вычислений вряд ли представляет собой нечто новое или хотя бы оригинальное. Дэвид Джелернтер, профессор Йелльского университета, выдвинул новаторскую идею распределенной архитектуры в проекте Linda. Впоследствии аналогичные идеи развивались в Lucent Technologies в рамках технологии Inferno, в IBM в проекте T Space, в национальной лаборатории Оак-Риджа в проекте Parallel Virtual Machine. Корпорация Microsoft также строит амбициозные планы, касающиеся распределенной операционной системы, получившей название Project Millennium.

Пока рано говорить о потенциальном воздействии Jini, но этот «джинн» действительно способен существенно уменьшить трудности, связанные с администрированием сети, и, возможно, стимулирует возникновение абсолютно нового класса мощных приложений.

Как это работает

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

Как работает Jini

Jini использует язык Java, чтобы обеспечить возможность подключения устройств к сети в режиме plug-and-play. При таком подходе подключаемые устройства автоматически становятся членами так называемой федерации. Федерация - это сеть устройств и приложений, которые в соответствии со спецификацией Jini предлагают друг другу определенные услуги. В федерацию может входить что угодно: файловые серверы, настольные ПК, сотовые телефоны, дисковые массивы, принтеры, программные объекты.

  1. Когда устройство, например карманный компьютер, присоединяется к федерации Jini, оно посылает широковещательный пакет, в котором объявляет себя частью федерации. Так функционирует служба обнаружения и присоединения Discovery and Join Service федерации Jini.
  2. Затем карманный компьютер посылает посредника в службу просмотра Lookup Service, которая, по существу, является тем пространством, где регистрируются услуги, предоставляемые в сети Jini. Посредник реализует услуги, предлагаемые каждым конкретным устройством.
  3. Когда карманному компьютеру необходима услуга, к примеру, печать задания, он посылает запрос, описывающий тип нужной ему услуги. Этот запрос отправляется в службу Lookup Service, которая анализирует его и выбирает в федерации наиболее вероятного кандидата, способного обеспечить эту услугу. Когда сопоставление выполнено, соответствующий посредник передается обратно карманному компьютеру.
  4. Возвращенный посредник устанавливает соединение между карманным компьютером и принтером. Посредник может сам содержать драйверы или приложения или может просто служить интерфейсом к приложениям на принтере. Но пользователи этого не видят. Они просто инициируют взаимодействие и получают возможность печатать свои документы.
  
Основу Jini составляет метод удаленного вызова Java Remote Method Invocation (RMI) из Sun JDK 1.2, сетевой службы, благодаря которой объекты Java могут взаимодействовать друг с другом. В этом смысле Jini - концептуальное и практическое расширение Enterprise JavaBeans - компонентной программной модели Java.

Сеть Jini похожа на большой рынок, где торговцы предлагают свои товары. «Торговцами» в сети Jini могут выступать пользователи, устройства или приложения. Новый торговец, пришедший на рынок, сообщает о своем появлении и быстро устраивается за прилавком. Затем он регистрирует свои услуги и товары, для чего должен вывесить их перечень на большой доске объявлений, где уже размещены десятки аналогичных перечней других торговцев. Jini предоставляет механизм, с помощью которого торговцы получают место на рынке и посылают свои перечни на доску объявлений.

Потенциальные покупатели ищут на доске объявлений перечень, в котором есть необходимые им услуги, а затем списывают оттуда же «адрес» этого торговца. После чего каждый покупатель оговаривает детали «сделки» с торговцем, в частности они обсуждают, «когда» и «сколько». Правила, которым должны удовлетворять предлагаемые торговцами услуги, диктуются еще одной спецификацией Sun - JavaSpaces.

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

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

Сам по себе рынок - объединение продавцов и покупателей - на языке Jini называется «федерацией». Желающим в нее вступить Jini назначает место в федерации через свою службу обнаружения и присоединения Discovery and Join Service (см. диаграмму). Служба просмотра Lookup Service передает предложения на доску объявлений и получает запрос на транзакции. Модель лизинга Leasing определяет принципы удаления «перечней» с доски объявлений и заключения контрактов. Список прав доступа Access Control List данной услуги определяет, кто именно может ею воспользоваться. Способы предоставления услуги устанавливаются спецификацией JavaSpaces, а также каждым конкретным приложением. Спецификацией Java RMI определяется единый язык, которым пользуются торговцы для взаимодействия друг с другом.

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

Jini, в совокупности с JavaSpaces, позволяет отказаться от монопольной модели и распределяет службы между различными частями сети, в конечном счете разбивая ОС на отдельные подсистемы и затем рассеивая их по сети, между клиентами и серверами.

Jini - очень важный шаг для инфраструктуры Java, которая добивается этой «распределенной кооперации». Обособленные приложения, или объекты, могут перемещаться по сети, взаимодействуя с другими объектами в зависимости от потребностей пользователей.

Время технологии

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

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

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

Возьмем, к примеру, вечное приложеньице, которое предлагается создать всем начинающим программистам, - Hello, World!. В централизованной модели для этого, вероятно, придется написать не больше десятка строк, и сообщение Hello, World! появится на экране. Даже новички в состоянии создать такое приложение всего за несколько минут. Но создать аналогичное приложение для распределенной среды намного сложнее. Программисты должны учесть возможность сбоя в сети, а также проблемы задержек и безопасности.

Однако есть ряд обнадеживающих фактов. Sun заключила партнерские соглашения с несколькими компаниями, в частности с Quantum и Ericsson, которые планируют использовать эту технологию. Кроме того, как сообщается, Novell намерена создать службы каталогов для Jini. Крупные игроки пока воздержались от многообещающих заявлений, однако по крайней мере одна, хотя и не очень известная компания Datek с ходу взялась за дело. Эта малазийская фирма выпускает пакет инструментальных средств для развертывания систем планирования ресурсов предприятия на основе Jini, получивший название Madura.

Sun заинтересована в широком и быстром распространении технологии Jini. Поэтому обещает поставлять Jini с исходными текстами, аналогично GNU, Linux или Apache, что позволит Java-программистам вносить изменения и совершенствовать код.

Jini могла бы потеснить большинство традиционных операционных систем. Не удивительно, что такие компании, как Microsoft, разрабатывают свои собственные модели распределенных вычислений. Однако сейчас позиции Jini выглядят более предпочтительными. Спецификация Jini готова настолько, что разработчики могут начинать создавать основанные на ней приложения. Хотя разрабатываемых распределенных систем вполне хватает, вряд ли можно сомневаться в том, что или Sun, или Microsoft определят стандарт на распределенную операционную среду. Популярности Jini способствуют возможности и известность Java, в то время как Microsoft «владеет» существующим стандартом на ОС.

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