Ohjelmointi

Hei, OSGi, osa 1: Paketit aloittelijoille

Open Services Gateway Initiative (OSGi) määrittelee arkkitehtuurin modulaaristen sovellusten ja kirjastojen kehittämiseen ja käyttöönottoon. Tässä ensimmäisessä artikkelissa, joka sisältää OSGi: n kolmiosaisen esittelyn, Sunil Patil opastaa sinut OSGi-kehityskonsepteihin ja näyttää kuinka voit rakentaa yksinkertaisen Hello World -sovelluksen käyttämällä Eclipse OSGi -säiliötoteutusta Equinoxia. Hän käsittelee lyhyesti myös palvelukeskeisten sovellusten rakentamista OSGi: n avulla ja esittelee OSG: itä ServiceFactory ja ServiceTracker luokat.

Open Services Gateway Initiative (OSGi), joka tunnetaan myös nimellä Java-käyttöjärjestelmän dynaaminen moduulijärjestelmä, määrittelee arkkitehtuurin modulaaristen sovellusten kehittämiselle. OSGi-konttitoteutusten, kuten Knopflerfish, Equinox ja Apache Felix, avulla voit jakaa sovelluksesi useisiin moduuleihin ja hallita siten niiden välisiä ristiriippuvuuksia helpommin.

OSGi, Equinox ja Project Jigsaw

Hanki todellinen näkymä tutkimalla opetuksia, jotka on saatu OSGi / Equinox-integraation aikana Ison-Britannian suurimmassa tiedeprojektissa, ja selvitä sitten, mitä voit odottaa Project Jigsawilta Java 9: ​​ssä.

Samoin kuin Java Servlet- ja EJB-määritykset, OSGi-määrittely määrittelee kaksi asiaa: joukko palveluita, jotka OSGi-säilön on toteutettava, ja sopimuksen säilön ja sovelluksen välillä. Kehittäminen OSGi-alustalla tarkoittaa ensin sovelluksen rakentamista OSGi-sovellusliittymien avulla ja sitten sen asentamista OSGi-säilöön. Kehittäjän näkökulmasta OSGi tarjoaa seuraavat edut:

  • Voit asentaa, poistaa asennuksen, käynnistää ja pysäyttää sovelluksen eri moduulit dynaamisesti käynnistämättä säilöä uudelleen.
  • Sovelluksessasi voi olla useampi kuin yksi tietyn moduulin versio käynnissä samanaikaisesti.
  • OSGi tarjoaa erittäin hyvän infrastruktuurin palvelukeskeisten sovellusten sekä sulautettujen, mobiilien ja monipuolisten Internet-sovellusten kehittämiseen.

Koska käytät servlet-kontteja verkkosovellusten rakentamiseen ja EJB-kontteja transaktiosovellusten rakentamiseen, saatat miettiä, miksi tarvitset vielä toisen tyyppisiä kontteja. Lyhyt vastaus on, että OSGi-säilöt on tarkoitettu erityisesti monimutkaisten Java-sovellusten kehittämiseen, jotka haluat hajottaa moduuleiksi. Laajennan tätä lyhyttä vastausta koko sarjassa.

Hei, OSGi: Lue sarja

  • Osa 1: Niput aloittelijoille
  • Osa 2: Esittelyssä kevään dynaamiset moduulit
  • Osa 3: Vie se palvelimen puolelle

OSGi yrityssovelluksissa

OSGi-määrittely aloitti työn OSGi-allianssissa maaliskuussa 1999. Sen päätavoitteena oli luoda avoin eritelmä hallittujen palvelujen toimittamiseksi paikallisiin verkkoihin ja laitteisiin. Perusajatuksena on, että kun lisäät OSGi-palvelualustan verkkoon liitettyyn laitteeseen (sekä sulautettuihin että palvelimiin), sinun pitäisi pystyä hallitsemaan laitteen ohjelmistokomponenttien elinkaarta mistä tahansa verkon kohdasta. Ohjelmistokomponentit voidaan asentaa, päivittää tai poistaa lennossa tarvitsematta koskaan häiritä laitteen toimintaa.

Vuosien ajan OSGi-tekniikka on kukoistanut sulautettujen järjestelmien ja verkkolaitteiden markkinoilla. Osittain Eclipsen ansiosta OSGi on nousemassa elinkelpoiseksi ja arvokkaaksi teknologiaksi yrityksen kehittämisessä.

Kasvava tuki OSGille

Vuonna 2003 Eclipsen kehitystiimi alkoi etsiä tapoja tehdä Eclipsestä dynaamisempi ja rikkaampi asiakasympäristö ja lisätä työkalupaketin modulaarisuutta. Lopulta joukkue päätti käyttää OSGi-kehystä ajonaikaisena komponenttimallina. Kesäkuussa 2004 julkaistu Eclipse 3.0 oli ensimmäinen OSGi-pohjainen Eclipse-versio.

Lähes kaikki yrityssovelluspalvelimet tukevat tai aikovat tukea OSGiä. Spring-kehys tukee myös OSGiä OSGi Service Platforms -projektin Spring Dynamic Modules for Project -projektin kautta, joka tarjoaa infrastruktuurikerroksen, joka helpottaa OSGin käyttöä kevään Java-yrityssovelluskehityksessä.

Avoimen lähdekoodin OSGi-kontit

Yrityskehittäjän näkökulmasta OSGi-säilöllä on niin pieni jalanjälki, että voit helposti upottaa sen yrityssovellukseen. Oletetaan esimerkiksi, että kehität monimutkaista verkkosovellusta. Haluat jakaa sovelluksen useisiin moduuleihin: yksi moduuli näkymäkerrokselle, toinen DAO-kerrokselle ja kolmas moduuli tiedonsiirtokerrokselle. Sulautetun OSGi-säilön käyttäminen näiden moduulien ristiriippuvuuksien hallitsemiseksi mahdollistaisi DAO-kerroksen päivittämisen (esimerkiksi hitaasta DAO: sta nopeaan DAO: ksi) käynnistämättä sovellusta uudelleen.

Niin kauan kuin sovelluksesi on OSGi-spesifikaation mukainen, sen pitäisi voida toimia missä tahansa OSGi-yhteensopivassa säilössä. Tällä hetkellä on kolme suosittua avoimen lähdekoodin OSGi-säilöä:

  • Equinox on OSGi Service Platform Release 4: n viitekehyksen viitetoteutus. Se on modulaarinen Java-ajonaika Eclipse IDE: n ytimessä, ja se toteuttaa kaikki OSGi R4 -määrityksen pakolliset ja suurimman osan valinnaisista ominaisuuksista.
  • Knopflerfish on avoimen lähdekoodin toteutus OSGi R3- ja OSGi R4 -määrityksille. Knopflerfish 2 toteuttaa kaikki pakolliset ominaisuudet ja jotkut R4-määrittelyssä määritellyistä valinnaisista ominaisuuksista.
  • Apache Felix on Apache Software Foundationin avoimen lähdekoodin OSGi-säilö. Kirjoitushetkellä tämä kontti ei ole täysin OSGI R4 -määrityksen mukainen.

Tässä artikkelissa käytämme Equinoxia OSGi-konttina. Katso Resurssit-osiosta lisätietoja Apache Felixistä ja Knopflerfishistä.