Sinulla on jo ohjelmistosi, mutta tarvitset silti tehokkaamman menetelmän, jonka avulla tekniset käyttäjät voivat laajentaa alustaa.
Vaikka OSGi on useimpien Java-kehittäjien tuttu, sen integroiminen tuotteeseen voi tuntua pelottavalta tehtävältä. Epäselvyyden puute OSGin tarkasta toiminnasta hämmentää edelleen tietä eteenpäin.
Toisin kuin kaikki, mitä he haluaisivat kokeilla, OSGi tuntuu enemmän kuin yrittäisi purjehtia laajalla merellä monille Java-kehittäjille.
Tämä artikkeli esittelee sinut OSGi Felix -kevään opetusohjelmassa yksinkertaisella ohjelmalla ja käy läpi sen edut ja muut tärkeät yksityiskohdat.
Joten mikä on OSGi?
Moduulien ja komponenttien luomisen ja jakelun tekee mahdolliseksi Java-kehys, joka tunnetaan nimellä OSGi (Open Service Gateway Initiative).
Se korostaa toimintojen kapselointia ja löysää kytkentää, mikä tarjoaa kehittäjille useita etuja, mukaan lukien modulaarisen toiminnallisuuden, joka on helposti siirrettävissä lähdekoodien välillä, ja testauksen, joka ei vaadi loputtomia riippuvuuksia.
Miten OSGi toimii?
Javan dynaaminen komponenttijärjestelmä määritellään OSGi-nimisellä spesifikaatiolla. Nämä tekniset tiedot mahdollistavat kehityslähestymistavan, jossa sovellus rakennetaan useista osista ja pakataan sitten nippuihin.
Nämä komponentit käyttävät kommunikointiin paikallisia ja verkkopohjaisia palveluita. Tavoitteena on tehdä ohjelman ydinkoodista mahdollisimman kompakti. Suuri kytkentä tämän koodin ja useiden komponenttien välillä on mahdollista.
Sovelluksen uudelleenkäytettäviä rakennuselementtejä kutsutaan komponenteiksi. Ajattele ominaisuuksia, kuten ostoskoria verkkokauppasivustollesi tai palkanlaskentasovellusta henkilöstöhallintajärjestelmääsi.
Komponentit voivat piilottaa toteutuksensa muilta komponenteilta OSGin avulla ja toimittaa niille vain tarvittavat tiedot palveluiden kautta.
Tämä estää komponentteja muuttamasta vahingossa tietoja, joihin heillä ei pitäisi olla pääsyä, ja hallitsee riippuvuuksia.
Kaikki OSGi-sovelluksen komponenttien väliset liitännät tehdään palveluiden kautta ideaalimaailmassa. Java-paketti sisältää palveluille määritellyn API:n.
Palveluntarjoajien ja asiakkaiden välinen yhteistyö edellyttää luokkien ja/tai rajapintojen käyttöä, joista API muodostuu.
Kaikki OSGi-komponentit on pakattu yhteen nipuiksi, joista jokainen sisältää resurssit, joita ne tarvitsevat toimiakseen. Kimput kertovat melko selkeästi, mitä ne tarvitsevat ympäristöltä ja mihin ne pystyvät.
Hyödyt
- OSGi-sovelluksilla on pääsy ulkoisiin nipputietovarastoihin.
- Viitekehys mahdollistaa palvelukeskeisen suunnittelun moduulitasolla.
- Sen avulla on mahdollista hallita sovelluspakettien versioita ja riippuvuuksia sekä standardoida ja helpottaa kolmansien osapuolien kirjastojen integrointia.
- Sovellukset mukautuvat paremmin muuttuviin vaatimuksiin, ovat kannettavampia ja nopeampia uudelleen suunniteltavissa.
- A Web-sovellus voidaan ottaa käyttöön ryhmänä versioituja OSGi-paketteja, joilla on dynaaminen käyttöikä, koska kehys on integroitu Java EE -ohjelmointimalliin.
- Sen sijaan, että se asennettaisiin kolmannen osapuolen kirjastona osana sovellusta, kehys tarjoaa Spring Frameworkin deklaratiivisen kokoonpanon ja virtaviivaistetun yksikkötestauksen standardoidussa muodossa, joka toimitetaan osana sovelluspalvelimen ajonaikaa.
- Yrityssovelluksille, jotka koostuvat useista versioiduista nipuista, joilla on dynaaminen elinkaari, kehys tarjoaa eristyksen.
- Se sisältää integroidun nippuarkiston, joka voi tallentaa useiden sovellusten käyttämiä yhteisiä ja versioituja paketteja, mikä estää jokaista sovellusta ottamasta käyttöön erillistä kopiota kustakin jaetusta kirjastosta.
OSGi Felix -jousen käytön aloittaminen
Resurssien hankkiminen
Lataamalla Apache Karafin uusin versio osoitteesta Tämä sivusto, voimme aloittaa OSGi-seikkailumme.
Apache Felixiin, OSGi-spesifikaatioiden Apache-toteutukseen, perustuva Apache Karaf tarjoaa alustan OSGi-pohjaisille sovelluksille.
Karaf tarjoaa Felixin lisäksi useita hyödyllisiä ominaisuuksia, jotka auttavat meitä tutustumaan OSGiin, kuten komentoriviliittymän, jonka avulla voimme kommunikoida alustan kanssa.
Pakettien sisäänpääsypaikka
Sovellus on pakattava OSGi-paketiksi ennen kuin sitä voidaan käyttää OSGi-ympäristössä. Lisäksi sovelluksen sisääntulokohta on määritettävä; se ei ole tavallinen julkinen staattinen void main(String[] args) -funktio.
Joten aloitetaan luomalla "Hei maailma” OSGi-pohjainen sovellus.
Aloitamme luomalla perus OSGi API -riippuvuuden:
OSGi-ajoympäristöllä on pääsy riippuvuuteen, joten paketin ei tarvitse sisältää sitä. Siksi se on merkitty toimitetuksi.
Luodaan nyt suoraviivainen HelloWorld-luokka:
Luokkien, jotka toimivat nippujen sisääntulopisteinä, on otettava käyttöön OSGi:n toimittama BundleActivator-liitäntä.
Kun tämän luokan sisältävä paketti käynnistetään, OSGi-alusta kutsuu start()-funktiota. Toisella puolella, vähän ennen nipun pysäyttämistä, kutsutaan funktio stop().
Älä unohda, että jokaisessa paketissa voi olla vain yksi BundleActivator. Molemmat tavat voivat kommunikoida OSGi-ajoajan kanssa annetun BundleContext-objektin avulla.
Paketin luominen
Tee pom.xml:stä todellinen OSGi-paketti tekemällä tarvittavat muutokset.
Meidän on ensin ilmaistava selvästi, että tavoitteemme on tuottaa nippu.
Sitten käytämme maven-bundle-plugin-laajennusta HelloWorld-luokan pakkaamiseen OSGi-paketiksi Apache Felix -yhteisön ansiosta:
OSGi-otsikoiden arvot, jotka haluamme sisällyttää nipun MANIFEST-tiedostoon, on määritetty ohjeosiossa.
Bundle-Activator on todellakin BundleActivator-ratkaisun oikea nimi, jota käytetään paketin käynnistämiseen ja pysäyttämiseen. Se on yhteensopiva juuri luodun luokan kanssa.
Vaikka se ei ole OSGi-otsikko, Private-Package-otsikko kehottaa laajennusta lisäämään paketin nippuun, mutta ei vain tee sitä muiden laajennusten käytettäväksi. mvn install -komentoa tulee käyttää nipun luomiseen.
Paketin asentaminen ja käyttäminen
Aloitetaan Karaf suorittamalla tämä komento:
jossa "KARAF HOME" viittaa kansioon, johon Karaf asetettiin. Voimme käyttää seuraavaa komentoa nipun asentamiseen, kun Karaf-konsolin kehote tulee näkyviin:
Paikallisen Maven-arkiston avulla Karafia käsketään lataamaan nippu.
Palauttaa nipun numeerisen tunnuksen, Karaf kirjoittaa sen ulos. Tämä tunnus voi vaihdella sen mukaan, kuinka monta pakettia on aiemmin asennettu. Paketti on nyt asennettu onnistuneesti, ja komento sen käynnistämiseksi on seuraava:
Kun käynnistät paketin, "Hello World by Jay" tulee näkyviin. Voimme nyt pysäyttää ja poistaa nipun käyttämällä:
Konsolissa näkyy "Goodbye World by Jay".
Yhteenveto
Kehittäjät voivat helposti lisätä uusia toimintoja olemassa olevaan verkkosovellukseen pitäen sen suojattuna ja eristettynä muista pääohjelman osista OSGi:n avulla.
Olemme oppineet OSGi:stä tässä viestissä, mukaan lukien sen toiminta, sen edut ja suoraviivainen ohjelma. OSGi:n sisällyttäminen omaan sovellukseesi ei ole vaikeaa.
Hyvää koodausta!
Jätä vastaus