Jini[tm].NET


Технологии Jini от Sun Microsystems и .NET от Microsoft еще полностью не обрели воплощения в программных продуктах, но уже сейчас им предрекают жесткую конкурентную борьбу на рынке peer-to-peer (P2P) сервисов.

Вступление

Для администраторов сейчас стало вполне нормальным явлением, когда все ресурсы находятся на сетевых дисках компьютеров, подключенных к сети. В этом случае доступ к информации на других компьютерах может быть организован с любого другого компьютера, без необходимости обращения к серверу. «Я не вижу здесь никакой сложности, — скажете Вы, — ведь Napster, Gnutella, Fasttrack и многие другие instant messaging cлужбы уже давно используются. Некоторые из них успели достичь пика своей популярности и умереть под напором судебных исков звукозаписывающих компаний», — и будете абсолютно правы. Сложность начинается там, где Р2Р модель переходит на качественно новый уровень, на уровень где распределенными становятся не только ресурсы и данные. В технологиях, разрабатываемых Microsoft и Sun Microsystems, меняется сам подход к понятию сети и сетевого компьютера. В двух словах, не вдаваясь, пока что, в технические особенности этих продуктов, можно сказать, что предопределено не только понятие сетевых распределенных ресурсов, но также установлено понятие сетевых служб — служб, которые, обслуживая запросы клиента, находятся на удаленных сетевых ресурсах. Другими словами, это перенос модели клиент/сервер на сетевую модель. Это означает, что сетевая служба (сервер) сама превращается в объект со своими методами и свойствами. Вызывая методы этой службы можно выполнять определенные действия и решать поставленные задачи.

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

Пытаясь cпрогнозировать развитие IT-индустрии, журналисты стараются интерпретировать любые мало-мальски важные фразы, оброненные менеджерами TOP100 фирм на выставках. К заявлениям руководства этих фирм относятся с особым вниманием. Много вопросов возникло после заявления Крэга Барэта, CEO Intel, о том, что будущее открыто только для больших серверов и небольших домашних компьютерных приставок. Вполне возможно, что когда он говорил об этом, он имел в виду технологию .NET, которая может свести потребность в локальных вычислительных мощностях на нет, так как выполнение этих задач возьмет на себя сервер, к которому будут обращается с запросами клиенты.

В дальнейшем, мы рассмотрим, какие основные технологии собрали под козырьком Jini от Sun Microsystems и .NET от Microsoft, их основные особенности и попытаемся, насколько этo возможно, сравнить эти две принципиально различные, но призванные служить одним и тем же целям, концепции. Технологии в настоящий момент находятся в стадии разработки, поэтому информации о них в прессу просачивается очень мало. Поверхностные описания — вот все, что можно почерпнуть о технологии .NET с сайта MSDN. С Jini дело обстоит немного лучше. Информации об этой технологии в прессе намного больше, поскольку она относится к открытым стандартам. Поэтому тех, кто хочет почерпнуть больше информации об этой технологии, отсылаю на сайт Sun Microsystems: www.sun.com/jini/.

В завершении вступления хочется упомянуть о самих фирмах. Перефразируя известный лозунг фирмы Sun Microsystems, можно сказать, что сеть — это не просто компьютер, это сетевой компьютер. Руководствуясь этим принципом разработчики Sun Microsystems начали работу над технологией Jini, которая является логическим продолжением работ фирмы в этой области. Что же касается фирмы Microsoft, то она пытается вскочить на подножку уходящего поезда, понимая всю значимость подобных технологий. Если Sun Microsystems с технологией Jini удастся завоевать популярность среди разработчиков, то Microsoft лишится огромного куска пирога, который приносит ей корпоративный рынок. А этого программный гигант допустить не может. Поэтому наступление ведется по всем фронтам. И это у них неплохо получается, свидетельством чему может быть выход Visual Studio .NET, одного из первых продуктов поддерживающих технологию .NET, (www.gotdotnet.com).

Jini

Работа над технологией была начата в конце 1999 года. В октябре 2000 года вышла первая спецификация архитектуры технологии Jini[tm]. Сначала технология была больше известна под названием Sun ONE (Open Network Environment). С развитием Java технологию было решено переименовать в Jini для большей созвучности с названием языка. В настоящий момент Jini[tm] является торговой маркой Sun Microsystems.

Технология Jini состоит из трех основных компонентов:

  1. Инфраструктура. Включает в себя распределенную систему защиты, которая интегрирована в RMI (Remote Method Invocation), представляющий собой механизм для нахождения, активации и захвата объектов сервисов. Инфраструктура состоит из объектов, использующих протоколы для передачи информации во время транзакций. На уровне транзакций происходят запросы и передача информации. Для поиска объектов и передачи информации между ними используется менеджер транзакций (transaction manager). Обязанности менеджера транзакций этим не ограничиваются. Помимо этого, он обязан координировать работу системы во время выполнения запросов и передавать найденую по этим запросам информацию;

  2. Модель программирования использует язык программирования Java и компоненты JavaBeans[tm] для организации интерфейсов транзакций и написания приложений, использующих модель распределенных вычислений;

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

Поиск сервиса, который может выполнить определенную задачу, происходит, приблизительно, по такому сценарию: объект клиента, расположенный на компьютере пользователя посредством провайдера сервисов (Service Provider), объекта, «специализирующегося» на поиске объектов сервисов, находит необходимый сервис.

При нахождении необходимого объекта, он исследует его, исходя из параметров соответствующего запроса. Это исследование найденого сервиса происходит посредством проверки его свойств.

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

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

Для большей наглядности попытаюсь объяснить действие технологии на примере.

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

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

  2. После этого устройство, в нашем случае камера, выбирает сервис (принтер), и устанавливает соединение.

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

В Jini используются, в основном, технологии, разработанные исключительно фирмой Sun Microsystems. Но это не является недостатком Jini, скорее наоборот. За счет этого достигается однородность разработки приложений. Это значит, что для разработки полнофункциональных, распределенных приложений, использующих все преимущества технологии Jini, нет необходимости в изучении различных программных продуктов, как обстоит дело с .NET. Для разработки приложений достаточно знать небольшой набор основных компонентов и технологий языка Java. Давайте рассмотрим, какие технологии распределенных вычислений, вместе с Java, включает спецификация Jini:

  • Виртуальная машина Java (JVM) позволяет запускать байт-код на любой платформе с JVM. За счет этого достигается кроссплатформенность системы;

  • Язык программирования Java служит для написания приложений, интерфейсов и обслуживания транзакций посредством использования набора компонентов Java Beans[tm]. Программы, написанные на этом языке, запускаются на любой платформе, содержащей JVM;

  • Java Server Pages (JSP) технология, подобная ASP+ в .NET, использует отрезки кода, написанного на Java и перекомпилированного в байт-код Java;

  • CORBA, технология позволяющая программам использовать общий набор объектов на любой платформе с предустановленным ORB компонентом;

  • Для передачи данных и организации связи между удаленными объектами используется набор компонентов, которые базируются на JDBC, EJB, Java XML Libraries. С помощью этого набора можно создавать надстройки над НTTP протоколом и организовывать транзакции;

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

Примерами применения технологии Jini изобилует интернет. Вот реальный пример начала использования технологии Jini в развертывании завершенных систем. Apropria, фирма из Калифорнии, занимающаяся созданием корпоративных систем управления и менеджмента, за основу своих разработок взяла технологию Jini, как наиболее перспективную и наиболее безопасную систему распределенных приложений. Фирма занимается проектом Plant~Advantage Workplace Information Integration software, который обеспечивает доступ к распределенным базам данных корпоративной информации, а также моментальное управление персоналом посредством распределенной системы. Более детальную информацию об этой фирме и ее программном продукте можно почерпнуть на сайте Sun Microsystems: www.sun.com/software/customers/.

.NET

Технология от Microsoft, более известна под названием Next Generation Windows Services, была впервые представлена на форуме Microsoft's Forum 2000 в июне 2000 года. Тогда она сочетала в себе наиболее амбициозные начинания в области распределенных вычислений. .NET не является продолжением присутствующей в настоящий момент на рынке технологии Distributed Network Area (DNA) 2000, как думают многие. По заявлению самих разработчиков, .NET является совершенно новой платформой.

В настоящий момент разработки технологии ведутся в трех направлениях:

  1. Ядро технологии — виртуальная машина, больше известная как Common Language Runtime (CLR).

    Виртуальная машина позволит запускать приложения, написанные на различных языках программирования на различных платформах, включая не-Microsoft платформы такие, например, как Palm-OS, за счет прекомпиляции аппликаций, написанных на разных языках в промежуточный байт-код. Байт-код, при выполнении на другой операционной системе, перекомпилируется с помощью виртуальной машины в выполняемый код. Основным преимуществом технологии для корпоративных клиентов, по заявлению руководства, будет возможность использовать любые устройства, в том числе и не-РС, подключенные к интернет. Поддержка Palm-OS, одной из самых распространненых опреационных систем для наладонников, уже многого стоит, так как считается, что следующей витком в распространении и развитии наладонников, будет покупка их в массовых количествах большими корпорациями для своих сотрудников с целью доступа и работы с корпоративной информацией в любом месте и в любое время. Работа технологии с различными устройствами подтверждается тем, что в настоящий момент заявлено о том, что такие не-РС устройства, как игровая консоль Xbox и ТВ-тюнер Ultimate TV будут поддерживать технологию .NET;

  2. Интернет-серверы, играющие роль, извините за тавтологию, серверов, отвечающих на запросы пользователя. Конечно же, за использование ресурсов каждого сервера необходимо будет платить, также, как и за услуги провайдера или информационного сервера. Каждый сервер будет специализироваться на выполнении определенного ряда запросов (поиск информации в базах данных, верстка документов и др.). И неважно, будете вы платить за использование ресурса повременно или за трафик, деньги будут поступать, в конце концов, в Microsoft. Предполагается, что в качестве служб обмена e-mail будет использоваться сервер Hotmail, а для обмена instant messaging сервер MSN Messenger;

  3. Комплект средств разработки, который включает набор базовых компонентов и языков программирования С#, ASP+, ADO+ и др.. Технология, без преувеличения, является ничем иным, как попыткой собрать под своим козырьком разработчиков, до сих пор, занимавшихся разработками приложений, не имевших к Microsoft и ее платформам совершенно никакого отношения. Всего этого Microsoft хочет добиться за счет языка С# (С sharp), метаязыков XML и SOAP (Simple Object Access Protocol). Причем С# будет служить для разработки компонентов, а XML и SOAP для связи разнородных (написанных на разных языках) приложений в единое целое. В этом отношении Microsoft обошел своего конкурента за счет того, что позволил разработчикам, которые будут использовать технологию .NET, писать приложения на языках программирования, которые наиболее всего подходят для решения данной задачи. Фирма Sun Microsystems в своей технологии позволила использование в качестве средства разработки приложений исключительно Java.

Комплекты разработки приложений следует рассмотреть более детально. С# — спецификация С-подобного языка, разрабатываемая Microsoft, как альтернатива языка Java. По заявлению Андерса Хейльсберга (Anders Hejlsberg), ведущего архитектора языка С# фирмы Microsoft, этот язык является логическим продолжением языка С++. Он использует такие же концепции присущие, пожалуй, всем объектно-ориентированным языкам как: методы, события, свойства и документации. Коньком технологии являются следующие преимущества: добавление новых типов и использование мета-даты в каждом из объектов. За счет этого достигается кроссплатформенность приложений, написанных на этом языке. Это первый компонентно-ориентированный язык (component-oriented language) из семейства С/C++.

XML и SOAP позволяют разрабатывать обмен данных между удаленными объектами, компонентами и приложениями. В основном, .NET веб-сервисы базируются на SOAP-модели транзакций (SOAP messaging models). XML также очень широко используется в .NET благодаря своей мета-модели представления данных и возможности, за счет этого, линкования разнородных объектов.

Помимо вышеперечисленных средств разработки, составляющими частями технологии .NET являются:

  • ASP+, новая версия ASP, которая поддерживает компиляцию ASP-кода в код промежуточного языка;

  • ADO+, новый набор ADO-компонентов, позволяющих работу с распределенными базами данных. Для связи данных в единое целое и обмена данными с распределенными объектами данных используется XML и SOAP;

  • С# — чернорабочий технологии, на которого возложена задача по разработке и написанию приложений под новую платформу. Это компонентно-ориентированный язык, содержащий набор собственных компонентов и объектов;

  • СОМ+ 2.0, модель рассредоточенных элементов, которая не поддерживает наследование элементов линейки COM/DCOM/COM+. Теперь, за счет использования технологии СОМ+ 2.0, не нужно будет производить изменения в реестре Windows для установки программ, достаточно будет просто скопировать посредством интернет необходимые компоненты на диск компьютера, как в старые добрые времена;

  • Win Forms и Web Forms — компоненты графического пользовательского интерфейса (GUI), доступные из Visual Studio и призванные облегчить разработку приложений;

  • Собственный командный язык (common language runtime), позволяет запускать приложения, которые были прекомпилированы из программного языка в промежуточный байт-код. Это позволяет разработчикам свободно выбирать среди программных языков тот, который наиболее подходит для выполнения поставленной задачи;

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

Технология .NET взяла многое от СОМ. Напомню, что СОМ позволяла взаимодействовать двум разным объектам, написанным на различных языках. Например, объект, написанный на С++, мог вызывать методы объекта, написанного на Visual Basic, и наоборот. Технология .NET пошла дальше: она позволяет объектам порождать новый объект, написанный на одном языке, из объекта, написанного на другом языке. Так, например, объект, написанный на С++, может породить объект, написанный на Visual Basic и наоборот. Так что телепортироваться на платформу .NET, пожалуй, будет проще всего с платформы СОМ. В настоящий момент интернет изобилует советами по такой телепортации.

Сравнительная характеристика

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

.NET Jini Различия
C# Java

С# и Java являются С-подобными языками. При построении некоторых компонентов в С# был использован пакет JavaBeans.

Основным отличием является то, что С# запускается исключительно под Windows, а Java работает на любой платформе, где имеется JVM.

Оба языка прекомпилируются в just-in-time (JIT) байт-код, который на каждой платформе перекомпилируется во время выполнения в подходящий для данной платформы код и выполняется.

ASP+ Java Server Pages (JSP)

ASP+ будет использовать код, написанный на Visual Basic, C# и, возможно, на других языках программирования, JSP, в свою очередь, использует код, написанный, исключительно, на Java.

IL Common Language Runtime Java Virtual Machine (JVM) и CORBA

Ядро технологии .NET, Common Language Runtime, позволяет запускать код, написанный на любом языке программирования, в среде Windows и других операционных системах, а также использовать совместный набор компонентов и объектов.

JVM позволяет запускать, прекомпилированный с Java, байт-код на любой платформе.

CORBA позволяет использовать совместный набор объектов, написанных на различных языках программирования, на любой платформе.

ADO+ и SOAP Web Services JDBC, EJB, JMS и Java XML Libraries (XML4J, JAXP)

ADO+ использует модель обмена данных, основанную на модели XML и SOAP, которая позволяет создавать надстройки над протоколом HTTP.

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

Сравнение в таблице беглое и поверхностное. Обе технологии в равной мере используют преимущества модели распределенных вычислений. К информации в таблице можно добавить только одно: технологии XML и SOAP одинаково широко используются в .NET и Jini для создания связей между разнородными объектами.

С одной стороны, допуская мультиязычность программного кода, концепция .NET привлекает наилучшее, что имеется в таких распространенных языках программирования, как Perl, Cobol, Eiffel, Python и др. С другой стороны, это усложняет работу над одним проектом группе программистов, пишущих отрезки кода на различных языках программирования. В Jini все обстоит проще. Здесь можно обойтись исключительно языком программирования Java. В последнее время появляются сообщения о разработках языков, которые будут наследовать лучшее из Java и добавлять свои функции, позаимствованные из других языков. Среди таких можно назвать технологии, возникшие на стыке двух языков. Это JPython, PERCobol, Tcl/Java project, Eiffel-to-JavaVM. Эти языки, вполне возможно, смогут усилить и без того сильную позицию языка Java среди разработчиков.

Заключение

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

Конечно, то же самое относится и к технологии Jini. Но политика и методы, которые использует Sun Microsystems совершенно другие, коренным образом отличные, от политики Microsoft в этом секторе. Sun Microsystems, как известно, являентся ярым приверженцом политики открытого кода. Именно открытость кода технологии не позволяет монополизировать рынок, как это происходит в случае с Microsoft.




Дополнительно

Технологии Jini от Sun Microsystems и .NET от Microsoft

Jini[tm].NET

Технологии Jini от Sun Microsystems и .NET от Microsoft еще полностью не обрели воплощения в программных продуктах, но уже сейчас им предрекают жесткую конкурентную борьбу на рынке peer-to-peer (P2P) сервисов.

Вступление

Для администраторов сейчас стало вполне нормальным явлением, когда все ресурсы находятся на сетевых дисках компьютеров, подключенных к сети. В этом случае доступ к информации на других компьютерах может быть организован с любого другого компьютера, без необходимости обращения к серверу. «Я не вижу здесь никакой сложности, — скажете Вы, — ведь Napster, Gnutella, Fasttrack и многие другие instant messaging cлужбы уже давно используются. Некоторые из них успели достичь пика своей популярности и умереть под напором судебных исков звукозаписывающих компаний», — и будете абсолютно правы. Сложность начинается там, где Р2Р модель переходит на качественно новый уровень, на уровень где распределенными становятся не только ресурсы и данные. В технологиях, разрабатываемых Microsoft и Sun Microsystems, меняется сам подход к понятию сети и сетевого компьютера. В двух словах, не вдаваясь, пока что, в технические особенности этих продуктов, можно сказать, что предопределено не только понятие сетевых распределенных ресурсов, но также установлено понятие сетевых служб — служб, которые, обслуживая запросы клиента, находятся на удаленных сетевых ресурсах. Другими словами, это перенос модели клиент/сервер на сетевую модель. Это означает, что сетевая служба (сервер) сама превращается в объект со своими методами и свойствами. Вызывая методы этой службы можно выполнять определенные действия и решать поставленные задачи.

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

Пытаясь cпрогнозировать развитие IT-индустрии, журналисты стараются интерпретировать любые мало-мальски важные фразы, оброненные менеджерами TOP100 фирм на выставках. К заявлениям руководства этих фирм относятся с особым вниманием. Много вопросов возникло после заявления Крэга Барэта, CEO Intel, о том, что будущее открыто только для больших серверов и небольших домашних компьютерных приставок. Вполне возможно, что когда он говорил об этом, он имел в виду технологию .NET, которая может свести потребность в локальных вычислительных мощностях на нет, так как выполнение этих задач возьмет на себя сервер, к которому будут обращается с запросами клиенты.

В дальнейшем, мы рассмотрим, какие основные технологии собрали под козырьком Jini от Sun Microsystems и .NET от Microsoft, их основные особенности и попытаемся, насколько этo возможно, сравнить эти две принципиально различные, но призванные служить одним и тем же целям, концепции. Технологии в настоящий момент находятся в стадии разработки, поэтому информации о них в прессу просачивается очень мало. Поверхностные описания — вот все, что можно почерпнуть о технологии .NET с сайта MSDN. С Jini дело обстоит немного лучше. Информации об этой технологии в прессе намного больше, поскольку она относится к открытым стандартам. Поэтому тех, кто хочет почерпнуть больше информации об этой технологии, отсылаю на сайт Sun Microsystems: www.sun.com/jini/.

В завершении вступления хочется упомянуть о самих фирмах. Перефразируя известный лозунг фирмы Sun Microsystems, можно сказать, что сеть — это не просто компьютер, это сетевой компьютер. Руководствуясь этим принципом разработчики Sun Microsystems начали работу над технологией Jini, которая является логическим продолжением работ фирмы в этой области. Что же касается фирмы Microsoft, то она пытается вскочить на подножку уходящего поезда, понимая всю значимость подобных технологий. Если Sun Microsystems с технологией Jini удастся завоевать популярность среди разработчиков, то Microsoft лишится огромного куска пирога, который приносит ей корпоративный рынок. А этого программный гигант допустить не может. Поэтому наступление ведется по всем фронтам. И это у них неплохо получается, свидетельством чему может быть выход Visual Studio .NET, одного из первых продуктов поддерживающих технологию .NET, (www.gotdotnet.com).

Jini

Работа над технологией была начата в конце 1999 года. В октябре 2000 года вышла первая спецификация архитектуры технологии Jini[tm]. Сначала технология была больше известна под названием Sun ONE (Open Network Environment). С развитием Java технологию было решено переименовать в Jini для большей созвучности с названием языка. В настоящий момент Jini[tm] является торговой маркой Sun Microsystems.

Технология Jini состоит из трех основных компонентов:

  1. Инфраструктура. Включает в себя распределенную систему защиты, которая интегрирована в RMI (Remote Method Invocation), представляющий собой механизм для нахождения, активации и захвата объектов сервисов. Инфраструктура состоит из объектов, использующих протоколы для передачи информации во время транзакций. На уровне транзакций происходят запросы и передача информации. Для поиска объектов и передачи информации между ними используется менеджер транзакций (transaction manager). Обязанности менеджера транзакций этим не ограничиваются. Помимо этого, он обязан координировать работу системы во время выполнения запросов и передавать найденую по этим запросам информацию;

  2. Модель программирования использует язык программирования Java и компоненты JavaBeans[tm] для организации интерфейсов транзакций и написания приложений, использующих модель распределенных вычислений;

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

Поиск сервиса, который может выполнить определенную задачу, происходит, приблизительно, по такому сценарию: объект клиента, расположенный на компьютере пользователя посредством провайдера сервисов (Service Provider), объекта, «специализирующегося» на поиске объектов сервисов, находит необходимый сервис.

При нахождении необходимого объекта, он исследует его, исходя из параметров соответствующего запроса. Это исследование найденого сервиса происходит посредством проверки его свойств.

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

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

Для большей наглядности попытаюсь объяснить действие технологии на примере.

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

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

  2. После этого устройство, в нашем случае камера, выбирает сервис (принтер), и устанавливает соединение.

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

В Jini используются, в основном, технологии, разработанные исключительно фирмой Sun Microsystems. Но это не является недостатком Jini, скорее наоборот. За счет этого достигается однородность разработки приложений. Это значит, что для разработки полнофункциональных, распределенных приложений, использующих все преимущества технологии Jini, нет необходимости в изучении различных программных продуктов, как обстоит дело с .NET. Для разработки приложений достаточно знать небольшой набор основных компонентов и технологий языка Java. Давайте рассмотрим, какие технологии распределенных вычислений, вместе с Java, включает спецификация Jini:

  • Виртуальная машина Java (JVM) позволяет запускать байт-код на любой платформе с JVM. За счет этого достигается кроссплатформенность системы;

  • Язык программирования Java служит для написания приложений, интерфейсов и обслуживания транзакций посредством использования набора компонентов Java Beans[tm]. Программы, написанные на этом языке, запускаются на любой платформе, содержащей JVM;

  • Java Server Pages (JSP) технология, подобная ASP+ в .NET, использует отрезки кода, написанного на Java и перекомпилированного в байт-код Java;

  • CORBA, технология позволяющая программам использовать общий набор объектов на любой платформе с предустановленным ORB компонентом;

  • Для передачи данных и организации связи между удаленными объектами используется набор компонентов, которые базируются на JDBC, EJB, Java XML Libraries. С помощью этого набора можно создавать надстройки над НTTP протоколом и организовывать транзакции;

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

Примерами применения технологии Jini изобилует интернет. Вот реальный пример начала использования технологии Jini в развертывании завершенных систем. Apropria, фирма из Калифорнии, занимающаяся созданием корпоративных систем управления и менеджмента, за основу своих разработок взяла технологию Jini, как наиболее перспективную и наиболее безопасную систему распределенных приложений. Фирма занимается проектом Plant~Advantage Workplace Information Integration software, который обеспечивает доступ к распределенным базам данных корпоративной информации, а также моментальное управление персоналом посредством распределенной системы. Более детальную информацию об этой фирме и ее программном продукте можно почерпнуть на сайте Sun Microsystems: www.sun.com/software/customers/.

.NET

Технология от Microsoft, более известна под названием Next Generation Windows Services, была впервые представлена на форуме Microsoft's Forum 2000 в июне 2000 года. Тогда она сочетала в себе наиболее амбициозные начинания в области распределенных вычислений. .NET не является продолжением присутствующей в настоящий момент на рынке технологии Distributed Network Area (DNA) 2000, как думают многие. По заявлению самих разработчиков, .NET является совершенно новой платформой.

В настоящий момент разработки технологии ведутся в трех направлениях:

  1. Ядро технологии — виртуальная машина, больше известная как Common Language Runtime (CLR).

    Виртуальная машина позволит запускать приложения, написанные на различных языках программирования на различных платформах, включая не-Microsoft платформы такие, например, как Palm-OS, за счет прекомпиляции аппликаций, написанных на разных языках в промежуточный байт-код. Байт-код, при выполнении на другой операционной системе, перекомпилируется с помощью виртуальной машины в выполняемый код. Основным преимуществом технологии для корпоративных клиентов, по заявлению руководства, будет возможность использовать любые устройства, в том числе и не-РС, подключенные к интернет. Поддержка Palm-OS, одной из самых распространненых опреационных систем для наладонников, уже многого стоит, так как считается, что следующей витком в распространении и развитии наладонников, будет покупка их в массовых количествах большими корпорациями для своих сотрудников с целью доступа и работы с корпоративной информацией в любом месте и в любое время. Работа технологии с различными устройствами подтверждается тем, что в настоящий момент заявлено о том, что такие не-РС устройства, как игровая консоль Xbox и ТВ-тюнер Ultimate TV будут поддерживать технологию .NET;

  2. Интернет-серверы, играющие роль, извините за тавтологию, серверов, отвечающих на запросы пользователя. Конечно же, за использование ресурсов каждого сервера необходимо будет платить, также, как и за услуги провайдера или информационного сервера. Каждый сервер будет специализироваться на выполнении определенного ряда запросов (поиск информации в базах данных, верстка документов и др.). И неважно, будете вы платить за использование ресурса повременно или за трафик, деньги будут поступать, в конце концов, в Microsoft. Предполагается, что в качестве служб обмена e-mail будет использоваться сервер Hotmail, а для обмена instant messaging сервер MSN Messenger;

  3. Комплект средств разработки, который включает набор базовых компонентов и языков программирования С#, ASP+, ADO+ и др.. Технология, без преувеличения, является ничем иным, как попыткой собрать под своим козырьком разработчиков, до сих пор, занимавшихся разработками приложений, не имевших к Microsoft и ее платформам совершенно никакого отношения. Всего этого Microsoft хочет добиться за счет языка С# (С sharp), метаязыков XML и SOAP (Simple Object Access Protocol). Причем С# будет служить для разработки компонентов, а XML и SOAP для связи разнородных (написанных на разных языках) приложений в единое целое. В этом отношении Microsoft обошел своего конкурента за счет того, что позволил разработчикам, которые будут использовать технологию .NET, писать приложения на языках программирования, которые наиболее всего подходят для решения данной задачи. Фирма Sun Microsystems в своей технологии позволила использование в качестве средства разработки приложений исключительно Java.

Комплекты разработки приложений следует рассмотреть более детально. С# — спецификация С-подобного языка, разрабатываемая Microsoft, как альтернатива языка Java. По заявлению Андерса Хейльсберга (Anders Hejlsberg), ведущего архитектора языка С# фирмы Microsoft, этот язык является логическим продолжением языка С++. Он использует такие же концепции присущие, пожалуй, всем объектно-ориентированным языкам как: методы, события, свойства и документации. Коньком технологии являются следующие преимущества: добавление новых типов и использование мета-даты в каждом из объектов. За счет этого достигается кроссплатформенность приложений, написанных на этом языке. Это первый компонентно-ориентированный язык (component-oriented language) из семейства С/C++.

XML и SOAP позволяют разрабатывать обмен данных между удаленными объектами, компонентами и приложениями. В основном, .NET веб-сервисы базируются на SOAP-модели транзакций (SOAP messaging models). XML также очень широко используется в .NET благодаря своей мета-модели представления данных и возможности, за счет этого, линкования разнородных объектов.

Помимо вышеперечисленных средств разработки, составляющими частями технологии .NET являются:

  • ASP+, новая версия ASP, которая поддерживает компиляцию ASP-кода в код промежуточного языка;

  • ADO+, новый набор ADO-компонентов, позволяющих работу с распределенными базами данных. Для связи данных в единое целое и обмена данными с распределенными объектами данных используется XML и SOAP;

  • С# — чернорабочий технологии, на которого возложена задача по разработке и написанию приложений под новую платформу. Это компонентно-ориентированный язык, содержащий набор собственных компонентов и объектов;

  • СОМ+ 2.0, модель рассредоточенных элементов, которая не поддерживает наследование элементов линейки COM/DCOM/COM+. Теперь, за счет использования технологии СОМ+ 2.0, не нужно будет производить изменения в реестре Windows для установки программ, достаточно будет просто скопировать посредством интернет необходимые компоненты на диск компьютера, как в старые добрые времена;

  • Win Forms и Web Forms — компоненты графического пользовательского интерфейса (GUI), доступные из Visual Studio и призванные облегчить разработку приложений;

  • Собственный командный язык (common language runtime), позволяет запускать приложения, которые были прекомпилированы из программного языка в промежуточный байт-код. Это позволяет разработчикам свободно выбирать среди программных языков тот, который наиболее подходит для выполнения поставленной задачи;

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

Технология .NET взяла многое от СОМ. Напомню, что СОМ позволяла взаимодействовать двум разным объектам, написанным на различных языках. Например, объект, написанный на С++, мог вызывать методы объекта, написанного на Visual Basic, и наоборот. Технология .NET пошла дальше: она позволяет объектам порождать новый объект, написанный на одном языке, из объекта, написанного на другом языке. Так, например, объект, написанный на С++, может породить объект, написанный на Visual Basic и наоборот. Так что телепортироваться на платформу .NET, пожалуй, будет проще всего с платформы СОМ. В настоящий момент интернет изобилует советами по такой телепортации.

Сравнительная характеристика

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

.NET Jini Различия
C# Java

С# и Java являются С-подобными языками. При построении некоторых компонентов в С# был использован пакет JavaBeans.

Основным отличием является то, что С# запускается исключительно под Windows, а Java работает на любой платформе, где имеется JVM.

Оба языка прекомпилируются в just-in-time (JIT) байт-код, который на каждой платформе перекомпилируется во время выполнения в подходящий для данной платформы код и выполняется.

ASP+ Java Server Pages (JSP)

ASP+ будет использовать код, написанный на Visual Basic, C# и, возможно, на других языках программирования, JSP, в свою очередь, использует код, написанный, исключительно, на Java.

IL Common Language Runtime Java Virtual Machine (JVM) и CORBA

Ядро технологии .NET, Common Language Runtime, позволяет запускать код, написанный на любом языке программирования, в среде Windows и других операционных системах, а также использовать совместный набор компонентов и объектов.

JVM позволяет запускать, прекомпилированный с Java, байт-код на любой платформе.

CORBA позволяет использовать совместный набор объектов, написанных на различных языках программирования, на любой платформе.

ADO+ и SOAP Web Services JDBC, EJB, JMS и Java XML Libraries (XML4J, JAXP)

ADO+ использует модель обмена данных, основанную на модели XML и SOAP, которая позволяет создавать надстройки над протоколом HTTP.

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

Сравнение в таблице беглое и поверхностное. Обе технологии в равной мере используют преимущества модели распределенных вычислений. К информации в таблице можно добавить только одно: технологии XML и SOAP одинаково широко используются в .NET и Jini для создания связей между разнородными объектами.

С одной стороны, допуская мультиязычность программного кода, концепция .NET привлекает наилучшее, что имеется в таких распространенных языках программирования, как Perl, Cobol, Eiffel, Python и др. С другой стороны, это усложняет работу над одним проектом группе программистов, пишущих отрезки кода на различных языках программирования. В Jini все обстоит проще. Здесь можно обойтись исключительно языком программирования Java. В последнее время появляются сообщения о разработках языков, которые будут наследовать лучшее из Java и добавлять свои функции, позаимствованные из других языков. Среди таких можно назвать технологии, возникшие на стыке двух языков. Это JPython, PERCobol, Tcl/Java project, Eiffel-to-JavaVM. Эти языки, вполне возможно, смогут усилить и без того сильную позицию языка Java среди разработчиков.

Заключение

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

Конечно, то же самое относится и к технологии Jini. Но политика и методы, которые использует Sun Microsystems совершенно другие, коренным образом отличные, от политики Microsoft в этом секторе. Sun Microsystems, как известно, являентся ярым приверженцом политики открытого кода. Именно открытость кода технологии не позволяет монополизировать рынок, как это происходит в случае с Microsoft.