Palveluarkkitehtuuria JVM:n sisällä – OSGi

Olen ystäväni kanssa jo jonkun aikaa katsellut sillä silmällä Java-maailman moduuliajattelun kehittymistä. Toisaalta rintamalla on mielenkiintoisena kehityksenä on JSR 294 ja JSR 277, eli niin sanotut super paketit ja moduulijärjestelmä, ja toisaalla taas OSGi (JSR-291). Superpaketit, moduulit ja OSGi lähestyvät hieman eri ongelmia, mutta ratkova ohjelmoijan näkökulmasta myös joitain samoja haasteita. JSR 294 ja JSR-277 on kuitenkin käytössä aikaisintaan vasta JDK-7:ssä, joten vakavammalla mielellä olen katsellut OSGia – varsinkin kun teollisuus laajemmin tuntuu olevan sen taustalla.

OSGi on useimmille meistä tuttu lähinnä sitä kautta että se on käytössä Eclipsessä moduulijärjestelmänä. Eli joka kerran kun olet ladannut Eclipseen päivityksiä tai uusia plugineita, olet käyttänyt Eclipsen sisäistä OSGi-containeria, Equinoxia. Containerin tehtävänä on pitää huolta palveluista ja paketeista,jotka ko. palveluita tarjoavat – sekä tarjota paketeille / ohjelmille rajapinnat kuinka saada käyttöön haluamansa palvelu containerista. Container myös pitää huolta luokkien lataamisesta ja rajaamisesta, minkä ansiosta eri bundleissa/paketeissa voidaan käyttää vaikka samoista jarreista eri versioita!

OSGi-mallin edut ovat meille tuttuja Eclipse-projektista. Sen avulla on mahdollista rakentaa modulaarisia sovelluksia ja hyvin toimivia ekosysteemejä, jossa eri osapuolet pystyvät rakentamaan omia laajennuksia ja sovelluksia, eivätkä ne konfliktoi muiden järjestelmän laajennuksien kanssa kunhan noudattavat sovittuja palvelurajapintoja. Toisinsanoen voit tehdä sovelluksia yhden VM:n sisällä samoilla periaatteilla kuin enterprise-tasolla palveluarkkitehtuurissa.

Kätevät OSGi tutorialit

Equinox Quickstart guide

Spring Dynamic Modules

This entry was posted in java, programming, spring. Bookmark the permalink.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s