Ohjelmointi

Jini: Uusi tekniikka verkottuneeseen maailmaan

Edellinen 1 2 Sivu 2 Sivu 2/2

Jini asiayhteydessä

Perinteisesti käyttöjärjestelmät on suunniteltu olettaen, että tietokoneessa on prosessori, vähän muistia ja levy. Kun käynnistät tietokoneen, se etsii ensin levyä. Jos se ei löydä levyä, se ei voi toimia tietokoneena. Tietokoneet näkyvät kuitenkin yhä useammin erilaisina peitteinä: upotettuina laitteina, joissa on prosessori, muistia ja verkkoyhteys - mutta ei levyä. Ensimmäinen asia, jonka matkapuhelin tekee esimerkiksi käynnistettäessä, on puhelinverkon etsiminen. Jos se ei löydä verkkoa, se ei voi toimia matkapuhelimena. Tämä suuntaus laitteistoympäristössä, levykeskeisestä verkkokeskeiseen, vaikuttaa siihen, miten organisoimme ohjelmistomme - ja siellä Jini tulee sisään.

Jini on yritys miettiä tietokonearkkitehtuuria, kun otetaan huomioon verkon kasvava merkitys ja prosessorien lisääntyminen laitteissa, joissa ei ole levyasemaa. Näiden laitteiden, jotka tulevat monilta eri toimittajilta, on oltava vuorovaikutuksessa verkon kautta. Itse verkko on hyvin dynaaminen - laitteita ja palveluita lisätään ja poistetaan säännöllisesti. Jini tarjoaa mekanismeja laitteiden ja palveluiden sujuvaan lisäämiseen, poistamiseen ja löytämiseen verkossa. Lisäksi Jini tarjoaa ohjelmointimallin, jonka avulla ohjelmoijien on helpompi saada laitteet puhumaan keskenään.

Jini pyrkii laajentamaan Java-, objektisarja- ja RMI-toimintojen päälle, jotka mahdollistavat objektien liikkumisen verkossa virtuaalikoneesta virtuaalikoneeseen, laajentamaan olio-ohjelmoinnin edut verkkoon. Sen sijaan, että Jini vaatisi laitetoimittajia sopimaan verkkoprotokollista, joiden kautta heidän laitteet voivat olla vuorovaikutuksessa, Jini antaa laitteille mahdollisuuden puhua keskenään objektien rajapintojen kautta.

Mikä on Jini?

Jini on joukko sovellusliittymiä ja verkkoprotokollia, joiden avulla voit rakentaa ja ottaa käyttöön hajautettuja järjestelmiä, jotka on järjestetty nimellä palveluliitot. A palvelu voi olla mikä tahansa verkossa oleva ja valmiina suorittamaan hyödyllisen toiminnon. Laitteistot, ohjelmistot, viestintäkanavat - jopa ihmiset itse - voivat olla palveluita. Esimerkiksi Jini-yhteensopiva levyasema voi tarjota "tallennus" -palvelun. Jini-yhteensopiva tulostin voisi tarjota "tulostuspalvelun". A palvelujen liitto, sitten on joukko palveluja, jotka ovat tällä hetkellä käytettävissä verkossa ja jotka asiakas (eli ohjelma, palvelu tai käyttäjä) voi koota auttamaan sitä saavuttamaan jonkin tavoitteen.

Tehtävän suorittamiseksi asiakas pyytää palvelujen apua. Esimerkiksi asiakasohjelma voi ladata kuvia digitaalisen kameran kuvien tallennuspalvelusta, ladata kuvat levykeaseman tarjoamaan pysyvään tallennuspalveluun ja lähettää sivun pienoiskuvien kokoisista versioista tulostuspalveluun. väritulostin. Tässä esimerkissä asiakasohjelma rakentaa hajautetun järjestelmän, joka koostuu itsestään, kuvien tallennuspalvelusta, pysyvästä tallennuspalvelusta ja väritulostuspalvelusta. Tämän hajautetun järjestelmän asiakas ja palvelut suorittavat yhdessä tehtävän: ladata ja tallentaa kuvia digitaalikamerasta ja tulostaa pikkukuvat.

Ajatus sanan takana liitto perustuu verkon Jini-näkymään - keskushallintaviranomaista ei ole. Koska kukaan palveluista ei ole vastuussa, kaikki verkossa olevat palvelut muodostavat federaation - ryhmän, joka koostuu samanlaisista ikäisistä. Jinin ajonaikainen infrastruktuuri tarjoaa keskusviranomaisen sijaan vain tavan, jolla asiakkaat ja palvelut löytävät toisensa (hakupalvelun kautta, joka tallentaa hakemiston tällä hetkellä saatavilla olevista palveluista). Kun palvelut löytävät toisensa, he ovat yksin. Asiakas ja sen palveluun kuuluvat palvelut suorittavat tehtävänsä Jinin ajonaikaisesta infrastruktuurista riippumatta. Jos Jini-hakupalvelu kaatuu, kaikki hajautetut järjestelmät, jotka on koottu yhteen hakupalvelun kautta ennen kaatumista, voivat jatkaa työtään. Jini sisältää jopa verkkoprotokollan, jota asiakkaat voivat käyttää palvelujen löytämiseen ilman hakupalvelua.

Kuinka Jini toimii

Jini määrittelee a ajonaikainen infrastruktuuri joka asuu verkossa ja tarjoaa mekanismeja, joiden avulla voit lisätä, poistaa, etsiä ja käyttää palveluja. Ajonaikainen infrastruktuuri sijaitsee verkossa kolmessa paikassa: hakupalveluissa, jotka istuvat verkossa; palveluntarjoajissa (kuten Jini-yhteensopivat laitteet); ja asiakkaissa. Hakupalvelut ovat Jini-pohjaisten järjestelmien keskeinen järjestelymekanismi. Kun uusia palveluja tulee saataville verkossa, he rekisteröivät itsensä hakupalveluun. Kun asiakkaat haluavat löytää palvelun auttamaan tehtävässä, he ottavat yhteyttä hakupalveluun.

Ajonaikainen infrastruktuuri käyttää yhtä verkkotason protokollaa, nimeltään löytöja kaksi objektitason protokollaa, nimeltään liittyä seuraan ja Katso ylös. Discoveryn avulla asiakkaat ja palvelut voivat etsiä hakupalvelut. Liity avulla palvelu voi rekisteröidä itsensä hakupalveluun. Haun avulla asiakas voi kysyä hakupalvelusta palveluita, jotka voivat auttaa asiakasta saavuttamaan tavoitteensa.

Löytöprosessi

Löytö toimii näin: Kuvittele, että sinulla on Jini-yhteensopiva levyasema, joka tarjoaa pysyvän tallennuspalvelun. Heti kun liität aseman verkkoon, se lähettää a läsnäoloilmoitus pudottamalla monilähetyspaketti tunnettuun porttiin. Läsnäoloilmoituksessa on IP-osoite ja porttinumero, johon hakupalvelu voi ottaa yhteyttä levyasemaan.

Hakupalvelut seuraavat tunnettua porttia läsnäoloilmoituspakettien löytämiseksi. Kun hakupalvelu vastaanottaa läsnäoloilmoituksen, se avautuu ja tarkastaa paketin. Paketti sisältää tietoja, joiden avulla hakupalvelu voi määrittää, pitäisikö sen ottaa yhteyttä paketin lähettäjään. Jos on, se ottaa yhteyttä lähettäjään suoraan tekemällä TCP-yhteyden paketista purettuun IP-osoitteeseen ja porttinumeroon. RMI: n avulla hakupalvelu lähettää objektin, jota kutsutaan a palvelun rekisteröijä verkon kautta paketin alullepanijalle. Palvelurekisteriobjektin tarkoituksena on helpottaa edelleen kommunikointia hakupalvelun kanssa. Käynnistämällä tämän objektin menetelmiä ilmoituspaketin lähettäjä voi suorittaa liittymisen ja haun hakupalvelussa. Levyaseman kohdalla hakupalvelu muodostaisi TCP-yhteyden levyasemalle ja lähettää sille palvelurekisterin objektin, jonka kautta levyasema rekisteröi sitten pysyvän tallennuspalvelunsa liittymisprosessin kautta.

Liittymisprosessi

Kun palveluntarjoajalla on palvelun rekisteröintikohde, etsinnän lopputuote, se on valmis tekemään liittymisen - tulemaan osaksi hakupalveluun rekisteröityjen palvelujen federaatiota. Liittymisen tekemiseksi palveluntarjoaja kutsuu rekisteröidy () menetelmä palvelurekisterin objektissa, välittäen parametrina objektin nimeltä a palvelun kohde, joukko palvelua kuvaavia esineitä. rekisteröidy () method lähettää kopion palvelukohteesta hakupalveluun, johon palvelukohde on tallennettu. Kun tämä on suoritettu, palveluntarjoaja on saattanut liittymisprosessin loppuun: sen palvelu on rekisteröity hakupalveluun.

Palveluerä on säilö useille kohteille, mukaan lukien a-niminen esine palveluobjekti, joita asiakkaat voivat käyttää vuorovaikutuksessa palvelun kanssa. Palvelutuote voi sisältää myös minkä tahansa määrän määritteet, mikä voi olla mikä tahansa esine. Joitakin potentiaalisia määritteitä ovat kuvakkeet, luokat, jotka tarjoavat käyttöliittymiä palvelulle, ja objektit, jotka antavat lisätietoja palvelusta.

Palveluobjektit käyttävät yleensä yhtä tai useampaa rajapintaa, joiden kautta asiakkaat ovat vuorovaikutuksessa palvelun kanssa. Esimerkiksi hakupalvelu on Jini-palvelu ja sen palveluobjekti on palvelun rekisteröijä. rekisteröidy () menetelmä, johon palveluntarjoajat ovat vedonneet liittymisen aikana, ilmoitetaan Palvelurekisteri käyttöliittymä, jonka kaikki palvelurekisterin objektit toteuttavat. Asiakkaat ja palveluntarjoajat keskustelevat hakupalvelun kanssa palvelurekisteriobjektin välityksellä Palvelurekisteri käyttöliittymä. Samoin levyasema tarjoaisi palveluobjektin, joka toteutti jonkin tunnetun tallennuspalvelurajapinnan. Asiakkaat etsivät levykeasemaa ja ovat vuorovaikutuksessa tämän tallennuspalvelurajapinnan kanssa.

Hakuprosessi

Kun palvelu on rekisteröitynyt hakupalveluun liittymisprosessin kautta, kyseinen palvelu on asiakkaiden käytettävissä, jotka kyselevät hakupalvelua. Rakentaakseen hajautetun palvelujärjestelmän, joka toimii yhdessä jonkin tehtävän suorittamiseksi, asiakkaan on löydettävä yksittäiset palvelut ja käytettävä niitä. Palvelun löytämiseksi asiakkaat kyselevät hakupalveluja kutsutun prosessin kautta Katso ylös.

Haun suorittamiseksi asiakas pyytää Katso ylös() menetelmä palvelurekisterin objektissa. (Asiakas, kuten palveluntarjoaja, saa palvelurekisterin löytämisprosessin kautta, kuten aiemmin tässä artikkelissa kuvataan.) Asiakas välittää argumenttina Katso ylös() a palvelumalli, objekti, joka toimii kyselyn hakukriteereinä. Palvelumalli voi sisältää viittauksen ryhmään Luokka esineitä. Nämä Luokka objektit ilmaisevat hakupalvelulle asiakkaan haluaman palveluobjektin Java-tyypin (tai tyypit). Palvelumalli voi sisältää myös a palvelun tunnus, joka yksilöi yksilöllisesti palvelun, ja määritteet, joiden on vastattava täsmälleen palveluntarjoajan palvelukohteeseen lataamia ominaisuuksia. Palvelumalli voi sisältää myös jokin näistä kentistä jokerimerkkejä. Esimerkiksi yleismerkki palvelun ID-kentässä vastaa mitä tahansa palvelun tunnusta. Katso ylös() method lähettää palvelumallin hakupalvelulle, joka suorittaa kyselyn ja lähettää nollan takaisin monille vastaaville palveluobjekteille. Asiakas saa viitteen vastaaviin palveluobjekteihin Katso ylös() menetelmä.

Yleensä asiakas etsii palvelua Java-tyypin mukaan, yleensä käyttöliittymän mukaan. Esimerkiksi, jos asiakkaan on käytettävä tulostinta, se laatii palvelumallin, joka sisältää a Luokka esine tunnetulle käyttöliittymälle tulostinpalveluihin. Kaikki tulostinpalvelut toteuttaisivat tämän tunnetun käyttöliittymän. Hakupalvelu palauttaisi palveluobjektin (tai objektit), joka otti käyttöön tämän käyttöliittymän. Palvelumalliin voidaan sisällyttää määritteitä, joilla kavennetaan vastaavuuksien määrää tällaiselle tyyppipohjaiselle haulle. Asiakas käyttää tulostinpalvelua vetoamalla tunnetuissa tulostinpalvelurajapinnoissa ilmoitettuihin palveluobjektimenetelmiin.

Käyttöliittymän ja toteutuksen erottaminen

Jinin arkkitehtuuri tuo olio-ohjelmoinnin verkkoon antamalla verkkopalveluille mahdollisuuden hyödyntää yhtä olio-ohjelmoinnin perustekijää: rajapinnan ja toteutuksen erottamista. Esimerkiksi palveluobjekti voi antaa asiakkaille pääsyn palveluun monin tavoin. Kohde voi itse asiassa edustaa koko palvelua, joka ladataan asiakkaalle haun aikana ja suoritetaan sitten paikallisesti. Vaihtoehtoisesti palveluobjekti voi toimia vain etäpalvelimen välityspalvelimena. Kun asiakas käyttää menetelmiä palveluobjektissa, se lähettää pyynnöt verkon kautta palvelimelle, joka tekee todellisen työn. Paikallinen palveluobjekti ja etäpalvelin voivat kukin tehdä myös osan työstä.

Yksi tärkeä seuraus Jinin arkkitehtuurista on, että välityspalvelinobjektin ja etäpalvelimen väliseen viestintään käytetyn verkkoprotokollan ei tarvitse olla asiakkaan tuntema. Kuten alla olevassa kuvassa on esitetty, verkkoprotokolla on osa palvelun toteutusta. Tämä protokolla on yksityinen asia, jonka palvelun kehittäjä on päättänyt. Asiakas voi kommunikoida palvelun kanssa tämän yksityisen protokollan kautta, koska palvelu injektoi osan omasta koodistaan ​​(palveluobjekti) asiakkaan osoitetilaan. Injektoitu palveluobjekti voisi olla yhteydessä palveluun RMI: n, CORBA: n, DCOM: n, pistorasioiden ja virtojen päälle rakennettujen kotitekoisten protokollien tai minkä tahansa muun kautta. Asiakkaan ei tarvitse yksinkertaisesti välittää verkkoprotokollista, koska se voi puhua tunnetun käyttöliittymän kanssa, jonka palveluobjekti toteuttaa. Palveluobjekti huolehtii tarvittavasta viestinnästä verkossa.

Saman palvelurajapinnan erilaiset toteutukset voivat käyttää täysin erilaisia ​​toteutusmenetelmiä ja täysin erilaisia ​​verkkoprotokollia. Palvelu voi käyttää erikoistuneita laitteistoja asiakkaiden pyyntöjen täyttämiseen tai tehdä kaiken työnsä ohjelmistona. Itse asiassa yhden palvelun toteuttamistapa voi kehittyä ajan myötä. Asiakas voi olla varma, että sillä on palveluobjekti, joka ymmärtää palvelun nykyisen toteutuksen, koska asiakas vastaanottaa palveluobjektin (hakupalvelun kautta) itse palveluntarjoajalta. Asiakkaalle palvelu näyttää tunnetulta käyttöliittymältä riippumatta siitä, miten palvelu toteutetaan.

Johtopäätös

Kuten olemme nähneet tässä johdantosarakkeessa, Jini yrittää nostaa hajautettujen järjestelmien ohjelmoinnin abstraktiotasoa verkkoprotokollatasosta objektirajapintatasoon. Verkkoihin kytkettyjen sulautettujen laitteiden lisääntyvässä leviämisessä monet hajautetun järjestelmän osat voivat tulla eri toimittajilta. Jini tekee laitteiden myyjien tarpeettomaksi sopimaan verkkotason protokollista, jotka antavat laitteidensa olla vuorovaikutuksessa. Sen sijaan toimittajien on sovittava Java-rajapinnoista, joiden kautta heidän laitteet voivat olla vuorovaikutuksessa. Jini-ajonaikaisen infrastruktuurin tarjoamat etsintä-, liittymis- ja hakuprosessit mahdollistavat laitteiden löytävän toisensa verkosta. Kun laitteet löytävät toisensa, laitteet voivat olla yhteydessä toisiinsa Java-rajapintojen kautta.

Ensikuussa

Vaikka tässä sarakkeessa keskitytään pääasiassa siihen, miten ratkaista tiettyjä ohjelmointiongelmia Jinin avulla, kuten graafisen käyttöliittymän lisääminen palveluun tai palvelun hallinnoiminen, keskustelen ensi kuussa Jinin todellisista ongelmista ja näkymistä.

Keskustellaan Jinistä

Voit keskustella tämän artikkelin materiaalista käymällä osoitteessa //www.artima.com/jini/jf/intro/index.html

Bill Venners on kirjoittanut ohjelmistoja ammattimaisesti 14 vuoden ajan. Piilaaksossa toimiva hän tarjoaa ohjelmistokonsultointipalveluja ja ylläpitää Java- ja Jini-kehittäjille tarkoitettua verkkosivustoa artima.com. Hän on kirjoittanut kirjan: Inside the Java Virtual Machine, julkaisija McGraw-Hill.

Lisätietoja tästä aiheesta

  • Vieraile Jini-yhteisössä saadaksesi tietoa prosessista, jolla tunnetut rajapinnat määritetään

    //www.jini.org

  • Lataussivu nykyiselle Jini-julkaisulle (Java-kehittäjäyhteydessä)

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

  • Lataussivu JDK 1.2 FCS -julkaisulle, jolla nykyinen Jini-julkaisu toimii

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

  • Online-Jini-opetusohjelma

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

  • Online-luentotiedot RMI: stä ja Jinistä

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

  • "The Network Revolution", Clyde Higaki ja Bill Venners (Sunin Jini-teknologian kotisivu, 1999). Kirjailijat Clyde Higaki ja Bill Venners tarjoavat useita skenaarioita kuvaamaan kuinka Jiniä voidaan käyttää todellisessa maailmassa

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

  • Linkit Jinin resursseihin

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

  • Jini-pääsivu Sunilla

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

  • Jini-yhteisö, Jini Sun Community Source -lisenssin allekirjoittajien keskinäinen vuorovaikutussivusto

    //www.jini.org

  • Lataussivu kaikille Jini-spesifikaatioille

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

  • JINI-USERS-postituslista-arkistot. Voit tilata JINI-USERS-postituslistan lähettämällä sähköpostia osoitteeseen [email protected]. Kirjoita viestin tekstiosaan tilaa jini-käyttäjät

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

  • Jinin UKK JINI-USERS-postituslistalle

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

Tämän tarinan "Jini: Uusi tekniikka verkottuneelle maailmalle" julkaisi alun perin JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found