Programování

Jini: Nová technologie pro svět v síti

Předchozí 1 2 Strana 2 Stránka 2 ze 2

Jini v kontextu

Operační systémy byly tradičně navrženy s předpokladem, že počítač bude mít procesor, část paměti a disk. Když spustíte počítač, první věc, kterou uděláte, je vyhledat disk. Pokud disk nenajde, nemůže fungovat jako počítač. Počítače se však stále častěji objevují v jiné podobě: jako vložená zařízení, která mají procesor, část paměti a síťové připojení - ale žádný disk. První věc, kterou mobilní telefon udělá, například když jej nastartujete, je vyhledat telefonní síť. Pokud síť nenajde, nemůže fungovat jako mobilní telefon. Tento trend v hardwarovém prostředí, od disku až po síť, bude mít vliv na to, jak organizujeme náš software - a právě tam přichází Jini.

Jini je pokus přehodnotit počítačovou architekturu, vzhledem k rostoucímu významu sítě a šíření procesorů v zařízeních, která nemají žádnou diskovou jednotku. Tato zařízení, která pocházejí od mnoha různých dodavatelů, budou muset komunikovat prostřednictvím sítě. Samotná síť bude velmi dynamická - zařízení a služby budou pravidelně přidávány a odebírány. Jini poskytuje mechanismy umožňující plynulé přidávání, odebírání a hledání zařízení a služeb v síti. Kromě toho Jini poskytuje programovací model, který programátorům usnadňuje komunikaci jejich zařízení.

Na základě Javy, serializace objektů a RMI, které umožňují objektům pohyb po síti z virtuálního stroje na virtuální stroj, se Jini pokouší rozšířit výhody objektově orientovaného programování na síť. Místo toho, aby vyžadovalo, aby se dodavatelé zařízení dohodli na síťových protokolech, prostřednictvím kterých mohou jejich zařízení interagovat, umožňuje Jini zařízením komunikovat mezi sebou prostřednictvím rozhraní k objektům.

Co je Jini?

Jini je sada API a síťových protokolů, které vám mohou pomoci při vytváření a nasazování distribuovaných systémů, které jsou organizovány jako federace služeb. A servis může být cokoli, co sedí v síti a je připraveno vykonávat užitečnou funkci. Služby mohou být hardwarová zařízení, software, komunikační kanály - dokonce i samotní uživatelé. Například disková jednotka s podporou Jini by mohla nabídnout službu „úložiště“. Tiskárna s podporou Jini může nabízet službu „tisku“. A federace služeb, pak je sada služeb, která je aktuálně k dispozici v síti a kterou může klient (tj. program, služba nebo uživatel) spojit, aby mu pomohla dosáhnout určitého cíle.

K provedení úkolu klient požádá o pomoc služby. Například klientský program může nahrát obrázky ze služby úložiště obrázků do digitálního fotoaparátu, stáhnout obrázky do služby trvalého úložiště nabízené diskovou jednotkou a odeslat stránku s miniaturními verzemi obrázků do tiskové služby barevná tiskárna. V tomto příkladu klientský program vytváří distribuovaný systém skládající se ze sebe samého, služby úložiště obrazů, služby trvalého úložiště a služby barevného tisku. Klient a služby tohoto distribuovaného systému spolupracují na provedení úkolu: vyložit a uložit obrázky z digitálního fotoaparátu a vytisknout stránku miniatur.

Myšlenka za tímto slovem federace je založeno na pohledu Jini na síť - neexistuje centrální řídící orgán. Protože nemá na starosti žádná služba, sada všech služeb dostupných v síti tvoří federaci - skupinu složenou ze stejných partnerů. Namísto centrálního orgánu poskytuje běhová infrastruktura Jini pouze způsob, jak se klienti a služby mohou navzájem najít (prostřednictvím vyhledávací služby, která ukládá adresář aktuálně dostupných služeb). Poté, co se služby navzájem lokalizují, jsou samy o sobě. Klient a jeho podřízené služby plní svůj úkol nezávisle na běhové infrastruktuře Jini. Pokud dojde k chybě vyhledávací služby Jini, mohou pokračovat v práci všechny distribuované systémy shromážděné prostřednictvím vyhledávací služby před jejím selháním. Jini dokonce obsahuje síťový protokol, který mohou klienti použít k vyhledání služeb bez vyhledávací služby.

Jak Jini funguje

Jini definuje a běhová infrastruktura který se nachází v síti a poskytuje mechanismy, které vám umožňují přidávat, odebírat, vyhledávat a přistupovat ke službám. Runtime infrastruktura se nachází v síti na třech místech: ve vyhledávacích službách, které jsou v síti; v poskytovatelích služeb (například zařízení s podporou Jini); a v klientech. Vyhledávací služby jsou ústředním organizačním mechanismem pro systémy založené na Jini. Když budou v síti k dispozici nové služby, zaregistrují se u vyhledávací služby. Pokud si klienti přejí najít službu, která mu pomůže s určitým úkolem, obrátí se na vyhledávací službu.

Runtime infrastruktura používá jeden protokol na úrovni sítě, tzv objeva dva volané protokoly na úrovni objektu připojit a vzhlédnout. Discovery umožňuje klientům a službám vyhledávat vyhledávací služby. Připojit umožňuje službě zaregistrovat se ve vyhledávací službě. Vyhledávání umožňuje klientovi dotazovat se na vyhledávací službu na služby, které mu mohou pomoci dosáhnout jeho cílů.

Proces objevování

Discovery funguje takto: Představte si, že máte diskovou jednotku s podporou Jini, která nabízí službu trvalého úložiště. Jakmile jednotku připojíte k síti, vysílá a oznámení přítomnosti přetažením paketu vícesměrového vysílání na známý port. Součástí oznámení o přítomnosti je IP adresa a číslo portu, kde lze diskovou jednotku kontaktovat vyhledávací službou.

Vyhledávací služby sledují známý port pro pakety oznámení o přítomnosti. Když vyhledávací služba obdrží oznámení o přítomnosti, otevře a zkontroluje paket. Paket obsahuje informace, které umožňují vyhledávací službě určit, zda má kontaktovat odesílatele paketu. Pokud ano, kontaktuje odesílatele přímo navázáním TCP spojení s IP adresou a číslem portu extrahovaným z paketu. Pomocí RMI odešle vyhledávací služba objekt s názvem a servisní registrátor, přes síť k původci paketu. Účelem objektu registrátora služeb je usnadnit další komunikaci s vyhledávací službou. Vyvoláním metod na tomto objektu může odesílatel paketu oznámení provést spojení a vyhledávání ve vyhledávací službě. V případě diskové jednotky by vyhledávací služba vytvořila připojení TCP k diskové jednotce a poslala by jí objekt registrátora služeb, jehož prostřednictvím by disková jednotka poté zaregistrovala svou službu trvalého úložiště prostřednictvím procesu připojení.

Proces připojení

Jakmile má poskytovatel služeb objekt registrátora služeb, konečný produkt zjišťování, je připraven provést připojení - stát se součástí federace služeb, které jsou registrovány ve vyhledávací službě. Chcete-li se připojit, poskytovatel služeb vyvolá Registrovat() metoda na objektu registrátora služeb, předávající jako parametr objekt zvaný a servisní položka, svazek objektů popisujících službu. The Registrovat() metoda odešle kopii položky služby až do vyhledávací služby, kde je položka služby uložena. Jakmile je toto dokončeno, poskytovatel služby dokončil proces připojení: jeho služba se zaregistrovala ve vyhledávací službě.

Položka služby je kontejner pro několik objektů, včetně objektu s názvem a servisní objekt, pomocí kterých mohou klienti komunikovat se službou. Položka služby může také obsahovat libovolný počet atributy, což může být jakýkoli objekt. Některé potenciální atributy jsou ikony, třídy, které poskytují GUI pro službu, a objekty, které poskytují více informací o službě.

Objekty služby obvykle implementují jedno nebo více rozhraní, prostřednictvím kterých klienti interagují se službou. Například vyhledávací služba je služba Jini a jejím objektem služby je registrátor služby. The Registrovat() metoda vyvolaná poskytovateli služeb během spojení je deklarována v ServiceRegistrar rozhraní, které implementují všechny objekty registrátora služeb. Klienti a poskytovatelé služeb hovoří s vyhledávací službou prostřednictvím objektu registrátora služeb vyvoláním metod deklarovaných v ServiceRegistrar rozhraní. Podobně by disková jednotka poskytovala objekt služby, který implementoval nějaké známé rozhraní služby úložiště. Klienti by vyhledávali a interagovali s diskovou jednotkou pomocí tohoto rozhraní služby úložiště.

Proces vyhledávání

Jakmile je služba zaregistrována u vyhledávací služby prostřednictvím procesu připojení, je tato služba k dispozici pro použití klienty, kteří dotazují tuto vyhledávací službu. Chcete-li vybudovat distribuovaný systém služeb, které budou spolupracovat při provádění určitého úkolu, musí klient vyhledat a získat pomoc jednotlivých služeb. K vyhledání služby se klienti dotazují na vyhledávací služby pomocí procesu s názvem vzhlédnout.

Chcete-li provést vyhledávání, klient vyvolá vzhlédnout() metoda na objektu registrátora služeb. (Klient, stejně jako poskytovatel služeb, získá registrátora služby prostřednictvím procesu zjišťování, jak je popsáno dříve v tomto článku.) Klient předá jako argument vzhlédnout() A servisní šablona, objekt, který slouží jako vyhledávací kritéria pro dotaz. Šablona služby může obsahovat odkaz na pole Třída předměty. Tyto Třída objekty označují vyhledávací službu typ (typy) Java objektu služby požadovaný klientem. Šablona služby může také obsahovat a ID služby, který jednoznačně identifikuje službu, a atributy, které se musí přesně shodovat s atributy nahranými poskytovatelem služby v položce služby. Šablona služby může také obsahovat zástupné znaky pro kterékoli z těchto polí. Například zástupný znak v poli ID služby bude odpovídat jakémukoli ID služby. The vzhlédnout() metoda odešle šablonu služby vyhledávací službě, která provede dotaz a odešle nulu mnoha odpovídajícím objektům služby. Klient získá odkaz na odpovídající objekty služby jako návratovou hodnotu vzhlédnout() metoda.

V obecném případě klient vyhledá službu podle typu Java, obvykle rozhraní. Pokud by například klient potřeboval použít tiskárnu, vytvořil by šablonu služby, která obsahovala a Třída objekt známého rozhraní se službami tiskárny. Všechny známé tiskové služby by implementovaly toto známé rozhraní. Vyhledávací služba vrátí objekt služby (nebo objekty), které implementovaly toto rozhraní. Atributy mohou být zahrnuty do šablony služby pro zúžení počtu shod pro takové vyhledávání podle typu. Klient by používal službu tiskárny vyvoláním metod objektu služby deklarovaných ve známém rozhraní služby tiskárny.

Oddělení rozhraní a implementace

Architektura Jini přináší objektově orientované programování do sítě tím, že umožňuje síťovým službám využívat jeden ze základů objektově orientovaného programování: oddělení rozhraní a implementace. Například objekt služby může klientům udělit přístup ke službě mnoha způsoby. Objekt může ve skutečnosti představovat celou službu, která se během vyhledávání stáhne do klienta a poté se provede místně. Alternativně může objekt služby sloužit pouze jako proxy pro vzdálený server. Když klient vyvolá metody na objektu služby, odešle požadavky přes síť na server, který provede skutečnou práci. Část práce může provádět také objekt místní služby a vzdálený server.

Jedním důležitým důsledkem architektury Jini je, že síťový protokol používaný ke komunikaci mezi objektem služby proxy a vzdáleným serverem nemusí být klientovi znám. Jak je znázorněno na obrázku níže, síťový protokol je součástí implementace služby. Tento protokol je soukromou záležitostí, o které rozhodne vývojář služby. Klient může se službou komunikovat prostřednictvím tohoto soukromého protokolu, protože služba vkládá část svého vlastního kódu (objekt služby) do adresního prostoru klienta. Vložený objekt služby mohl komunikovat se službou prostřednictvím RMI, CORBA, DCOM, nějakého domácího protokolu postaveného na soketech a streamech nebo čehokoli jiného. Klient se prostě nemusí starat o síťové protokoly, protože může mluvit se známým rozhraním, které objekt služby implementuje. Objekt služby se postará o veškerou nezbytnou komunikaci v síti.

Různé implementace stejného rozhraní služby mohou používat zcela odlišné přístupy k implementaci a zcela odlišné síťové protokoly. Služba může ke splnění požadavků klienta používat specializovaný hardware nebo může veškerou svou práci provádět v softwaru. Ve skutečnosti se přístup implementace, který používá jedna služba, může v průběhu času vyvíjet. Klient si může být jist, že má objekt služby, který rozumí aktuální implementaci služby, protože klient obdrží objekt služby (prostřednictvím vyhledávací služby) od samotného poskytovatele služby. Klientovi vypadá služba jako známé rozhraní bez ohledu na to, jak je služba implementována.

Závěr

Jak jsme viděli v tomto úvodním sloupci, Jini se pokouší zvýšit úroveň abstrakce pro programování distribuovaných systémů z úrovně síťového protokolu na úroveň rozhraní objektu. V rozvíjejícím se šíření vestavěných zařízení připojených k sítím může mnoho částí distribuovaného systému pocházet od různých dodavatelů. Díky Jini není nutné, aby se prodejci zařízení dohodli na protokolech na úrovni sítě, které umožňují jejich zařízením komunikovat. Místo toho se musí prodejci dohodnout na rozhraních Java, prostřednictvím kterých mohou jejich zařízení interagovat. Procesy zjišťování, připojení a vyhledávání poskytované runtime infrastrukturou Jini umožní zařízením vzájemně se lokalizovat v síti. Jakmile se navzájem lokalizují, zařízení budou moci navzájem komunikovat prostřednictvím rozhraní Java.

Příští měsíc

Ačkoli se tento sloupec zaměří hlavně na to, jak řešit konkrétní problémy s programováním pomocí Jini, jako je přidání grafického uživatelského rozhraní ke službě nebo zajištění správy služby, příští měsíc budu diskutovat o problémech a vyhlídkách Jini v reálném světě.

Diskutovat o Jini

Chcete-li diskutovat o materiálu představeném v tomto článku, navštivte: //www.artima.com/jini/jf/intro/index.html

Bill Venners píše software profesionálně již 14 let. Se sídlem v Silicon Valley poskytuje softwarové konzultační a školicí služby a udržuje web pro vývojáře Java a Jini, artima.com. Je autorem knihy: Inside the Java Virtual Machine, vydané nakladatelstvím McGraw-Hill.

Další informace o tomto tématu

  • Navštivte komunitu Jini, kde najdete informace o procesu, kterým budou definována známá rozhraní

    //www.jini.org

  • Stránka ke stažení pro aktuální vydání Jini (na Java Developer Connection)

    //developer.java.sun.com/developer/products/jini

  • Stránka ke stažení pro vydání JDK 1.2 FCS, na kterém běží aktuální vydání Jini

    //java.sun.com/products/jdk/1.2/

  • Online výukový program Jini

    //pandonia.canberra.edu.au/java/jini/tutorial/Jini.xml

  • Online přednášky k kurzu o RMI a Jini

    //www.eli.sdsu.edu/courses/spring99/cs696/notes/index.html

  • „The Network Revolution,“ Clyde Higaki a Bill Venners (Sun's Jini Technology Homepage, 1999). Autoři Clyde Higaki a Bill Venners nabízejí řadu scénářů, které popisují, jak může být Jini použit v reálném světě

    //java.sun.com/features/1999/01/jini_scenario.html

  • Odkazy na zdroje Jini

    //www.artima.com/jini/resources/index.html

  • Hlavní stránka Jini na Slunci

    //java.sun.com/products/jini/

  • Komunita Jini, centrální web pro interakci mezi signatáři licence zdroje Jini Sun Community

    //www.jini.org

  • Stránka ke stažení pro všechny specifikace Jini

    //java.sun.com/products/jini/specs/

  • Archivy adresářů JINI-UŽIVATELÉ. Chcete-li se přihlásit k odběru seznamu adresátů JINI-USERS, pošlete e-mail na adresu [email protected]. Do těla zprávy napište přihlásit se k odběru jini-uživatelů

    //archives.java.sun.com/archives/jini-users.html

  • Časté dotazy týkající se Jini pro seznam adresátů JINI-USERS

    //www.artima.com/jini/faq.html

Tento příběh „Jini: New technology for a networked world“ byl původně publikován společností JavaWorld.