КаталогИндекс раздела

        

Jini приходит на помощь

Steve Morgan
ObjectSpace Inc.

Jini to the Rescue
Опубликовано в IEEE Spectrum, April 2000, pp. 44-49

Понедельник, 1 января 2001 года
Стенли прогуливал свою собаку в парке и вдруг увидел ребенка, лежащего на земле без движения. Белая девочка со значком на футболке Poketon II, возрастом не более семи лет. Он наклонился над ней и несколько раз спросил: "С тобой все в порядке?". Ее молчание испугало его, но, по крайней мере, он заметил, что она дышит. Берясь за свой сотовый телефон, чтобы вызвать помощь, он обратил внимание, что на ней нет никаких ран, синяков, ушибов - фактически никаких видимых причин ее бессознательного состояния.

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

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

Врач сообщил водителю имена родителей девочки, с которыми надо связаться. Как бы в ответ, радио в машине заговорило: "Алло? Алло?". Это была мать девочки, которая отвечала на вызов своего сотового телефона через полстраны. Сначала женщина была сбита с толку, потом ударилась в панику. Но медсестра быстро заверила ее, что ее дочь выгладит неплохо, и женщина заговорила спокойнее, хотя все еще озабоченно. Стенли тоже успокоился и стал искать свою собаку, тихонько сказав себе, видя что его собака "Я бы не хотел быть на месте няни этой девочки, когда 'Мэм' вечером вернется домой".

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

Концепция Jini была впервые оглашена в начале 1999 года фирмой Sun Microsystem, Paolo Alto, Calif. С тех пор она претерпела некоторые изменения, сделанные Сообществом Jini (Jini Community), открытое сотрудничающее объединение, которое сейчас включает более 20 000 лицензий Jini, в том числе 3Com, Canon, Epson, Kodak, Motorolla, Nokia, Novell, Quantum, Segate, Sharp, Siemens, Sony, Xerox.

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

Покупки на базаре

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

В среде Jini клиентское приложение действует как покупатель. Но если покупателю нужны продукти и их приготовление, то клиенту нужны данные и сервис. Чтобы получить их он идет на рынок - Jini Lookup Service - где находит указания, как попасть ко всем торговцам (в мире Jini они называются сервисами) которые готовы и могут обслужить его. Клиент получает данные от одних сервисов (баз данных или систем сбора данных) и запрашивает их обработку у других сервисов (компьютеров или контроллеров). Когда этот процесс завершается, Jini-клиент имеет свое "кушанье" - желаемый результат - и может использовать его как захочет.

Чтобы эта система работала, рынок должен быть прежде всего установлен путем установки Jini Lookup Service (JLS, поисковый сервис Jini) - достаточно простого сегмента прикладного программного обеспечения - на одном или нескольких серверных (host) узлах сети. (Поскольку может существовать более одного рынка, в системе может быть и более одного JLS.) Сервисы, ищущие рынка для своих товаров, посылают обнаруживающий запрос (discovery request) JLS.Услышав такой запрос, JLS начинает частное собеседование с сервисом для его присоединения к рынку (рис.1).

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

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

Jini базируется на Java2 как в своем визуальном интерфейсе, так и в сетевых протоколах. (См. "Роль Java в Jini".) Используя интерфейсы Java, сервисы позволяют клиентам работать с известным поведением, независимо от их реализации. Спецификации Jini для передачи кодов, которые специфичны для определенного сервиса, зависят от механизма сериализации Java (рис.2).

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

Как часть своих обязанностей, JLS постоянно прислушивается к пакетам дейтаграмм обнаруживающих запросов (discovery request). Услышав его, он начинает процесс обнаружения (discovery). Если JLS поддерживает какие-то виды групповых запросов, запрашивающий сервис может быть допущен к соединению. JLS оповещает запрашивающий сервис, который соответствует новому программному интерфейсу для сервисов - сериализованным объекта Java, что он зарегистрирован.

Поскольку сервисы могут присоединяться к сети или отсоединяться от нее в любое время, JLS и его текущему списку зарегистрированных сервисов дано вольное название "федерация". Новому зарегистрированному сервису дается договор о его регистрации на время, определяемое тем, кто конфигурирует систему. Если договор не будет продлен, JLS исключит сервис из федерации.

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

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

Упрощение администрирования

Рассмотрим проблемы, с которыми сталкивается системный администратор, когда добавляет новый дисковод CD-ROM, не имея преимуществ, предоставляемых Jini. Сегодня дисковод может иметь любой из нескольких общих интерфейсов: IDE, EIDE, SCSI, параллельный порт, PCI, UCB или Fireware. Разное не только оборудование, но и каждый тип и версия интерфейса может требовать своего драйвера, который работает с определенной операционной системой. Более того, для определенного интерфейса может существовать несколько версий программных драйверов. Так что, для выполнения этой "простой" работы администратор должен знать все о возможных конфигурациях. Разнообразие усложняет эту задачу, которая на самом деле должна быть простой.

С JINI администратор сети просто устанавливает дисковод, включает его в сеть и включает питание. Дисковод, который должен быть установлен в сети как сервис для "только-читаемых" файлов посылает обнаруживающий пакет Jini в сеть. Уже установленный в сети JLS "слышит" это объявление и отвечает на него. Фактически, он получает от CD-ROM порцию байт-кода JLS, реализующего корректный интерфейс с дисководом.

Позже, когда компьютер требует сервиса CD-ROM, JLS слышит этот запрос и отвечает на него порцией байт-кода Java, полученного от дисковода (рис.4). Все коммуникации с дисководом будут обрабатываться этим байт-кодом. JLS может даже использовать договорный механизм Jini, чтобы предоставить клиенту арендный договор на определенное количество времени, но договор может быть обновлен, если сервис собирается оставить сеть на долгое время. Аренда может разделяться с другими клиентскими приложениями, поскольку CD-ROM - устройство только чтения, доступ к которому может осуществляться без изменения информации на нем, или быть монопольным, если, скажем, диск содержит приватную информацию.

Расширенный охват Jini

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

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

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

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

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

Барьеры впереди

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

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

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

Движение моды

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

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

Свежую информацию о разработке Jini можно найти на странице фирмы Sun "Jini Connection Technology" - www.sun.com/jini

Состояние дел в Сообществе Jini, организации, включающих в себя всех участников Sun Community Source License по Jini Connection Technology доступно на - www.jini.org.

Две книги объясняют Jini подробно:
W.Keith Edwards Core Jini - Prentice Hall, Upper Side River, N.J., 1999.
Ken Arnold et al. The Jini Specificetions - Addison-Wesley, reading, Mass., 1999 .

Также в издательстве Addison-Wesley в прошлом году вышла книга, в которой объясняется работа сервисов Jini - E.Freeman, S.Hupfer, K.Arnold Java Spaces: Principles, Patterns, and Practice.

Роль Java в Jini

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

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

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

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

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

Java, таким образом, обеспечивает средство для легкого переноса программ. Основываясь на этом, Jini устанавливает правила высокоавтоматизированного взаимодействия оборудования.

Richard Comerfold


КаталогИндекс раздела