Hajautettujen järjestelmien rakentaminen - Jini. Ohjelmistotuotantovälineet-seminaarin esitelmä

Samankaltaiset tiedostot
Integrointi. Ohjelmistotekniikka kevät 2003

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

HSMT J2EE & EJB & SOAP &...

Sovellusarkkitehtuurit

HOJ J2EE & EJB & SOAP &...

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Aurinkoenergiajärjestelmien etäseurantajärjestelmä

Tietojärjestelmäarkkitehtuurit

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Järjestelmäarkkitehtuuri (TK081702)

Dokumentin nimi LOGO:) Tampereen teknillinen yliopisto. Ryhmä XXX: Projektiryhmän nimi Projektin nimi

Harri Kaukovuo Senior Sales Consultant Technology Sales Oracle Finland Oy

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Action Request System

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Web-palvelukonsepti tarjoaa yhden tavan toteuttaa SOA. Tämä tapa perustuu Web-palvelustandardien käyttöön: palvelut kuvataan WSDL-kielen avulla ja

PRINTER DRIVER PÄÄKÄYTTÄJÄN OPAS

Tekninen suunnitelma - StatbeatMOBILE


Terveydenhuollon Atk-päivät 2009

The OWL-S are not what they seem

Valppaan asennus- ja käyttöohje

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

TermBase NET versio (Beta)

CUDA. Moniydinohjelmointi Mikko Honkonen

ETÄTERMINAALIYHTEYS SELAIMELLA

.NET ajoympäristö. Juha Järvensivu 2007

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Visma Software Oy

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

ZENworks Application Virtualization 11

Web sovelluksen kehittäminen sähkönjakeluverkon suojareleisiin

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Tiedonsiirto- ja rajapintastandardit

Visma Nova Webservice Versio 1.1 /

Ulkoiset mediakortit. Käyttöopas

Ohjelmistoarkkitehtuuri. Verkotettu multimedia. Mediavirtojen puskurointi. Multimedian vaikutukset. Selain-ohjelmistoarkkitehtuuri.

in condition monitoring

15. Ohjelmoinnin tekniikkaa 15.1

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Vuorekseen liittyvä tutkimusja kehitysprojekti. Langaton Vuores. Kotikatupalvelin

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

T harjoitustyö, kevät 2012

Convergence of messaging

Tekninen suunnitelma - StatbeatMOBILE

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

13/20: Kierrätys kannattaa koodaamisessakin

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Ohjelmistoteknologioiden koulutus: Web-sovelluskehitys, Java Server. Infotilaisuus klo 10:00

Maiju Mykkänen Susanna Sällinen

W3C ja Web-teknologiat

HKL:N RAITIOLIIKENTEEN HÄIRIÖTIEDOTUS

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Käyttöjärjestelmät: prosessit

FuturaPlan. Järjestelmävaatimukset

erasmartcardkortinlukijaohjelmiston

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikka / Tietoverkkotekniikka. Antti Parkkinen. ICTLAB tuotantoverkon IPv6 toteutus

Mistä on kyse ja mitä hyötyä ne tuovat?

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Purot.net Wiki. Tutkielma. Paavo Räisänen. Centria Ammattikorkeakoulu

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

J2EE vs..net Olli Sakari

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

- Jarjestelmaasiantuntija Markku Jaatinen

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti Mooan

Hand Held Products Net Base telakan sisäisten IP osoitteiden muuttaminen. Käyttöohje

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2

Haka-käyttäjien kokoontuminen Arto Tuomi CSC Tieteen tietotekniikan keskus

Videoneuvottelu. Johdanto. Järjestelmät. Telepresensce. Laitteisto. Ryhmäneuvottelut

Linux palomuurina (iptables) sekä squid-proxy

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Ulkoiset mediakortit. Käyttöopas

KODAK EIM & RIM VIParchive Ratkaisut

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Web Service torilla tavataan!

WINDOWS 10 -kurssi.

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

Ulkoiset mediakortit Käyttöopas

Integraatiotekniikan valinta - tie onnistumiseen.

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ti LÄHIVERKOT -erikoistyökurssi. X Window System. Jukka Lankinen

Ohjelmistojen mallintaminen

HOJ Kertausluento. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/58

Tekstinkäsittelystä. H4: Tekstinkäsittelyn perusharjoitus. Toimisto ohjelmista

Verkon värittämistä hajautetuilla algoritmeilla

Transkriptio:

Hajautettujen järjestelmien rakentaminen - Jini Ohjelmistotuotantovälineet-seminaarin esitelmä Anu K. Leponiemi (anu@lepo.net) Helsingin yliopisto Tietojenkäsittelytieteen laitos Helsinki 2000

SISÄLLYSLUETTELO 1 JINI VISIO VERKOTETUSTA PALVELUAVARUUDESTA... 1 2 JININ TOIMINTA... 2 2.1 PALVELUVERKON RAKENNE... 2 2.2 JINI-PALVELUPYYNNÖN ETENEMINEN... 3 3 JINI-PALVELUN TOTEUTTAMISEN TEKNISIÄ NÄKÖKOHTIA... 4 3.1 JINI-PALVELUN TARVITSEMAT APUPALVELUT... 4 3.2 JINI... 4 4 JININ TULEVAISUUS... 6 4.1 LÄHEISET TEKNIIKAT... 6 4.2 JINI PÄÄTELAITTEISSA... 7 4.3 JINIOLOGIASTA... 7 LÄHTEET

1 Jini visio verkotetusta palveluavaruudesta Päätelaitteiden erityislaatuinen luonne tietokoneena erityisesti rajallisen kapasiteetin tuottamat ongelmat lisäävät tarvetta yksinkertaiselle tavalle toteuttaa hajautettuja järjestelmiä. Jini on hajautettujen järjestelmien rakentamiseen tarkoitettu Java-teknologia. Jini-teknologian kantavana ajatuksena on tehdä ohjelmistopalveluista ja laitteista Jini-palveluita, jotka ovat helposti käytettävissä kaikkialla Internetissä. Teknisemmin tarkasteltuna Jini on Java 2:n päälle rakennettu Java-rajapinta. Sen ensimmäisen version, Jini 1.0:n, Sun Microsystems julkisti tammikuussa 1999. Tällä hetkellä toimivia Java 2 alustoja ovat Java 2 Standard Edition (J2SE), Java 2 Enterprise Edition (J2EE) ja Java 2 Micro Edition (J2ME). Lokakuussa 2000 Jinistä julkaistiin versio 1.1. 1

2 Jinin toiminta Java 2 tarjoaa turvallisuuskysymyksiin ja hajautettujen järjestelmien viestintään liittyviä valmiuksia, jotka puuttuivat aikaisemmista Javan versioista, ja joita Jini tarvitsee toimiakseen. RMI (Remote Method Invocation) on Java 2:n osa, joka on Jinin pohjana hajautettujen järjestelmien toiminnassa. 2.1 Palveluverkon rakenne Jini muodostuu palveluyhteisöistä (a community of Jini services), joihin Jinipalvelut kuuluvat. Palvelu voi olla esimerkiksi tulostuspalvelu. Näitä palveluja muut yhteisön Jini-palvelut voivat käyttää. Yhteen yhteisöön voi kuulua useampia Jini-palveluita, ja yksi Jini-palvelu voi kuulua useampaan yhteisöön. Kuva 1. Yhteen palveluun voi ottaa yhteyttä monen eri palvelurekisterin kautta (P3). Kuvassa Y tarkoittaa yhteisöä, P palvelua ja DB palvelurekisteriä. 2

Palveluyhteisön palveluiden tiedot on talletettu kunkin palveluyhteisön palvelurekisteriin. 2.2 Jini-palvelupyynnön eteneminen Jinin perustoiminnot voidaan esittää yleistasolla kolmessa osassa. Toimijana on Jini-palvelua käyttävä palvelu. Ensin palvelu löytää (discover) Jinipalveluyhteisön. Löytäminen voi tapahtua esimerkiksi etsimällä paikallisia Jini-yhteisöjä, saamalla joltakin uudelta Jini-yhteisöltä useille palveluille yleisesti tarkoitettu (multicast) ilmoitus tai liittymällä suoraan johonkin ennalta tunnetun yhteisön palvelurekisteriin (lookup service). Palvelurekisterillä on tieto kaikista yhteisön palveluista; sen kautta palvelut käyttävät toisiaan. Palvelu valitsee löytämistään yhteisöistä ne, jotka se katsoo hyödyllisiksi, ja liittyy niihin. Tämän se tekee ottamalla yhteyden palvelurekisteriin välittäen sille itseään kuvaavan palveluyksikön (service item). Palveluyksikkö koostuu metadatasta ja palvelun proxy-oliosta, ts. palvelun käyttäjille tarjotusta rajapinnasta. Saamiensa tietojen avulla palvelurekisteri liittää uuden palvelun osaksi yhteisöä lisäämällä sen proxy-olion ja metadatan omaan tietovarastoonsa. Jini-yhteisön palvelurekisteri huolehtii siis siitä, että asiakas löytää etsimänsä palvelun. Asiakas täyttää palvelukaavakkeen (service template), jossa se kuvaa etsimänsä palvelun. Kaavakkeen tietoja voivat olla esimerkiksi palvelun tunnus (service id), palvelun käyttämät Java-luokat ja joukko muita palvelua kuvaavia ominaisuuksia. Näiden hakuehtojen perusteella asiakas saa palvelurekisteriltä proxy-olion, jonka asiakas voi imuroida (download) ja ajaa. Proxy-olio voi hoitaa saamansa palvelupyynnöt itse tai ohjata pyynnön jatkokäsittelyä varten varsinaiseen yhteisöön liittyneeseen palveluun sen omalle palvelimelle. Edelleen proxy-olio ohjaa saamansa vastauksen pyynnön lähettäneelle asiakkaalle. 3

3 Jini-palvelun toteuttamisen teknisiä näkökohtia Tässä kappaleessa esitetään muutamia teknisiä käytännön asioita yksinkertaisen Jini-sovelluksen toteuttamiseksi. Aluksi käydään läpi tarvittavat apupalvelut. Lisätietoja kannattaa etsiä Sun Microsystemsin wwwsivuilta osoitteesta http://java.sun.com/jini/. 3.1 Jini-palvelun tarvitsemat apupalvelut Jini-palvelu vaatii toimiakseen tietyt apupalvelut. Näitä välttämättömiä apupalveluja ovat HTTP-palvelin, RMI:n vahtipalvelu (RMI activation daemon) ja palvelunetsintäpalvelu (lookup service) [Edw99]. HTTP-palvelin tarvitaan käytännössä jokaiselle koneelle, jonka kautta koodia välitetään toisille sovelluksille, koska RMI käyttää HTTP-protokollaa koodin siirtämiseen. Ainoa syy jättää erillinen HTTP-palvelin pystyttämättä tällaisessa tilanteessa on se, että Jini-palvelu itse tarjoaa välineet HTTPsiirtoon [Edw99]. RMI-vahtipalvelu antaa harvoin käytettävien olioiden olla täysin passiivisessa tilassa. Palvelupyynnön saavuttua RMI-vahtipalvelu välittää tiedon näille olioille eli herättää ne. RMI-vahti tulee käynnistää erikseen jokaiselle koneelle, jolla ajetaan palvelunetsintäpalvelua. Palvelurekisteri pitää siis kirjaa kaikista palveluyhteisön Jini-palveluista. RMI-vahtipalvelu on korvaamaton palvelurekisterille, koska palvelurekisterin kaatuessa RMI-vahtipalvelu saa sen nopeasti toimimaan. Palvelurekisteri on Jini-verkon keskeisin osa, ja siksi sen toiminnan pitää olla mahdollisimman vakaata. 3.2 Jini Jini koostuu joukosta Java-luokkia. Sun Microsystemsin www-palvelusta on saatavissa Jinin uusin versio alle kymmenen megatavun (10 MT) zip- 4

pakettina. Paketti sisältää paitsi Jinin ytimen myös esimerkkisovelluksia, dokumentteja ja muita kirjastoja, joista on apua Jini-palvelujen kehittämisessä. Suurin osa Jini-koodista on net.jini:n alla. Koodi on jaettu osiin siten, että Jinin ydinosat ovat net.jini.core.*-pakkauksissa (pakattu jar-tiedostoon jini-core.jar) ja ytimen päälle rakennetut osat net.jini.*-pakkauksissa (jini-ext.jar). Sunin erilliset apuluokat ovat com.sun.jini.*-pakkauksissa (sun-util.jar). 5

4 Jinin tulevaisuus Tässä kappaleessa käydään läpi asioita, jotka vaikuttavat Jini-tekniikan menestymiseen tulevaisuudessa. 4.1 Läheiset tekniikat Jiniä on verrattu CORBAan (Common Object Request Broker Architecture), joka on OMG:n (Object Management Group) määrittelemä hajautettujen palvelujen kehittämisen mahdollistava olioarkkitehtuurimalli [Hoq97]. CORBA pyrkii toimimaan mahdollisimman riippumattomana ohjelmointikielistä, kun taas Jiniä ja aiemmin RMI-tekniikkaa on kritisoitu siitä, että se tukee vain Javaa. Jinin käyttämä RMI-tekniikka perustui aikaisemmin erityiselle RMIprotokollalle, mutta on laajennettu toimimaan myös CORBAn Internet Inter- ORB protokollalla (IIOP). Tämän ansiosta RMI-asiakkaat ja palvelut voivat keskustella CORBA-sovellusten kanssa [Wal00]. Jinissä Javan käyttö kaikissa palvelurakenteissa ei kuitenkaan ole välttämätöntä. Java-rajapinnat mahdollistavat kommunikoinnin Jinipalveluverkossa, mutta palvelujen sisällä laitteistorajapinnat ja ohjelmistopalvelut voidaan rakentaa käyttäen Jinistä riippumatonta ohjelmointikieltä [Wal00]. RMI (Remote Method Invocation) tekniikka mainitaan usein Jinin yhteydessä. RMI:n tarjoamat välineet ovat olennainen osa Jinin toimintaa, mutta eivät kuitenkaan sama asia. Jini käyttää hyväkseen RMI-tekniikan suomia mahdollisuuksia; Jini on joukko palveluja ja malleja, jotka on rakennettu RMI:n päälle [Edw99]. 6

4.2 Jini päätelaitteissa Jini on suunnattu ennen kaikkea sulautettuihin järjestelmiin eli päätelaitteisiin, joiden kapasiteetti on rajallinen. Jinin laitearkkitehtuurimäärittely (Jini Device Architecture Specification) määrittelee yleiset tavat käyttää Jiniä ylemmällä tasolla. Näitä kuvauksia on esitetty Perronen ja Chagantin artikkelissa [PCK99]. Palvelimella oleva Jini-palvelu koostuu laite-proxysta (device proxy), joka tarjoaa Jini-palvelun käyttäjille Java-rajapinnan laitteeseen. On kuitenkin mahdollista toteuttaa laitteen ohjaus jollakin muulla kielellä kuin Javalla. Javaa Jini-palvelu tarvitsee vain verkkorajapintana. Ajateltaessa Jini-palvelua jotakin laitetta ohjaavana älykkäänä rajapintana tämä toteutusvälineiden kirjo on ehkä helpoin ymmärtää. Jini-sovellusta rakennettaessa on tehtävä linjaveto siitä, mitä toteutetaan asiakaspäätelaitteessa (palvelun proxy-oliossa) ja mikä jätetään palvelimella olevan osan tehtäväksi. Päätös ei ole helppo, sillä tässä yhteydessä palvelin voi tarkoittaa myös toista sulautettua järjestelmää - esimerkiksi tulostinta - jolloin senkin kapasiteetti on rajallinen. Laitteiden Java-alustan täytyy tukea Jiniä, joten vaihtoehdoiksi käyvät vain aiemmin mainitut Java 2 alustat. J2SE ja J2EE ovat raskaita; J2ME on kevyempi mutta myös toiminnallisuudeltaan rajallisempi. Yksi vaihtoehto siirtää kuormaa laitteelta on toteuttaa Jini-palvelu ja laite-proxy kapasiteetiltaan suuremmalle koneelle, joka voi käyttää täyttä Java 2 sovellusalustaa, ja antaa näiden kommunikoida omalla tavallaan itse ohjattavan laitteen kanssa. 4.3 Jiniologiasta Jinistä on puhuttu joskus Jiniologiana sen filosofisen luonteen vuoksi; Jini pyrkii ennakoimaan nopeiden verkkojen tulevaisuutta, jossa palvelujen hajautettu käyttö ja kannettavat järjestelmät ovat arkipäivää. Tietokoneen 7

luonne monipuolistuu; se ei ole enää tavallinen kotitietokone, vaan pieniä tietokoneita voi olla yhdessäkin taloudessa monta [Ven99]. Tällaisessa tulevaisuudessa Jini nähdään rakentamassa tietokoneiden välistä palveluverkostoa. 8

LÄHTEET Edw99 Edwards, K. Core Jini, Sun Microsystems, 1999. Hoq98 Hoque, R. CORBA 3, IDG Books Worldwide, Inc, 1998. PCK99 Perrone, P. J, Chaganti, V. S. R. K; Jini in the Box (Embedded Systems Programming; marraskuu 1999; nro 12; ss. 55-64) SUN00 Sun Microsystemsin www-palvelu (http://java.sun.com/jini/). Ven99 Venners, B. The Jini, Vision (JavaWorld, August 1999). <URL: http://developer.java.sun.com/developer/technicalarticles/jini/jinivision/jinio logy.html> Wal00 Waldo, J. The End of the Protocols. Sun Microsystems. <URL: http://developer.java.sun.com/developer/technicalarticles/jini/protocols.html> 9