Jo hawwe jo software al yn plak, mar jo hawwe noch in effektiver metoade nedich om jo technyske brûkers it platfoarm út te wreidzjen.
Sels hoewol OSGi goed bekend is by de measte Java-ûntwikkelders, kin it yntegrearjen fan it yn jo produkt lykje as in drege taak. It gebrek oan dúdlikens oer de krekte wurking fan OSGi bemuoit de wei fierder.
Yn tsjinstelling ta alles wêrmei't se graach eksperimintearje wolle, fielt OSGi mear as besykje de brede see te farren nei in protte Java-ûntwikkelders.
Dit artikel sil jo yntrodusearje oan 'e OSGi Felix maitiidstutorial mei in ienfâldich programma en gean troch, de foardielen, en oare wichtige details.
Dus wat is OSGi?
It oanmeitsjen en fersprieden fan modules en komponinten wurdt mooglik makke troch it Java-ramt bekend as OSGi (Open Service Gateway Initiative).
It beklammet funksje-ynkapseling en losse koppeling, dy't ferskate foardielen biedt oan ûntwikkelders, ynklusyf modulêre funksjonaliteit dy't maklik oerdraachber is tusken boarnekoades en testen dy't gjin ûneinige ôfhinklikens nedich binne.
Hoe wurket OSGi?
In dynamysk komponint systeem foar Java wurdt definiearre troch in set fan spesifikaasjes neamd OSGi. Dizze spesifikaasjes meitsje in ûntwikkelingsoanpak mooglik wêrby't in applikaasje wurdt boud út in oantal dielen en dan ferpakt yn bondels.
Lokale en netwurk-basearre tsjinsten wurde brûkt troch dizze komponinten om te kommunisearjen. De kearnkoade fan it programma sa kompakt mooglik meitsje is it doel. Hege koppeling tusken dizze koade en ferskate komponinten is mooglik.
De werbrûkbere bouweleminten fan 'e applikaasje wurde komponinten neamd. Tink oan funksjes lykas in winkelkarre foar jo e-commerce-webside as in leanapplikaasje foar jo personielbehearsysteem.
Komponinten kinne OSGi brûke om har ymplemintaasjes te ferbergjen fan oare komponinten en allinich de nedige gegevens oan har leverje fia tsjinsten.
Dit foarkomt dat komponinten ûnbedoeld gegevens feroarje wêr't se gjin tagong ta moatte hawwe en beheart ôfhinklikens.
Alle ferbiningen tusken komponinten yn in OSGi-applikaasje wurde makke fia tsjinsten yn in ideale wrâld. In Java-pakket befettet de API dy't spesifisearre is foar tsjinsten.
De gearwurking tusken tsjinstferlieners en klanten fereasket it gebrûk fan klassen en / of ynterfaces, dy't de API foarmje.
Alle OSGi-komponinten wurde tegearre yn bondels ferpakt, wêrfan elk de boarnen omfettet dy't se nedich binne om te funksjonearjen. Bundels binne frij dúdlik oer wat se nedich binne fan 'e omjouwing en wat se yn steat binne.
foardielen
- OSGi-applikaasjes hawwe tagong ta eksterne bondelrepositories.
- It ramt lit service-oriïntearre ûntwerp op modulenivo mooglik wêze.
- It makket it mooglik om de ferzjes en ôfhinklikens fan tapassingsbundels te behearjen neist it standerdisearjen en it makliker meitsje om biblioteken fan tredden te yntegrearjen.
- Applikaasjes binne oanpasberer oan feroarjende easken, draachberder en rapper om te rekonstruearjen.
- A webapplikaasje kin wurde ynset as in groep ferzjes fan OSGi-bundels mei in dynamysk libben troch de yntegraasje fan it ramt mei it Java EE-programmearringmodel.
- Yn stee fan ynstalleare as in bibleteek fan tredden as ûnderdiel fan 'e applikaasje, leveret it ramt de deklarative gearstalling en streamlinede ienheidstesten fan it Spring Framework yn in standerdisearre foarm dy't wurdt levere as ûnderdiel fan' e applikaasje-tsjinner runtime.
- Foar bedriuwsapplikaasjes besteande út ferskate ferzjes bondels mei dynamyske libbenssyklusen, biedt it ramt isolaasje.
- It befettet in yntegreare bondel-repository dat dielde mienskiplike en ferzjeearre bondels kin opslaan dy't brûkt wurde troch ferskate applikaasjes, wêrtroch elke applikaasje in aparte kopy fan elke dielde bibleteek kin ynsette.
Te begjinnen mei OSGi Felix spring
De boarnen krije
Troch de lêste ferzje fan Apache Karaf te downloaden fan dizze side, kinne wy begjinne ús OSGi aventoer.
Op grûn fan Apache Felix, de Apache-ymplemintaasje fan 'e OSGi-spesifikaasje, biedt Apache Karaf in platfoarm foar OSGi-basearre applikaasjes.
Karaf leveret ferskate nuttige funksjes boppe op Felix dy't ús sille helpe om ússels bekend te meitsjen mei OSGi, lykas in kommandorigelynterface dy't ús yn steat stelt om te kommunisearjen mei it platfoarm.
Yngongspunt foar bondels
In applikaasje moat wurde ferpakt as in OSGi-bondel foardat it kin wurde útfierd yn in OSGi-omjouwing. Derneist moat it yngongspunt fan 'e applikaasje wurde oantsjutte; it is net de standert iepenbiere statyske void haadfunksje (String[] args).
Dus litte wy begjinne mei it meitsjen fan in "Hallo wrâld” applikaasje basearre op OSGi.
Wy begjinne mei it fêststellen fan in basis OSGi API-ôfhinklikens:
De OSGi-runtime sil tagong hawwe ta de ôfhinklikens, dêrom hoecht de bondel it net te befetsjen. Dêrom is it markearre as levere.
Litte wy no de rjochte HelloWorld-klasse oanmeitsje:
Klassen dy't fungearje as yngongspunten foar bondels moatte de OSGi-levere BundleActivator-ynterface ymplementearje.
As de bondel mei dizze klasse wurdt lansearre, ropt it OSGi-platfoarm de start() -funksje op. Oan 'e oare kant, koart foar't de bondel stoppe wurdt, wurdt de funksje stop() neamd.
Lit ús net ferjitte dat elke bondel mar ien BundleActivator kin hawwe. Beide manieren kinne kommunisearje mei de OSGi-runtime mei it BundleContext-objekt dat wurdt jûn.
It meitsjen fan in bondel
Meitsje de pom.xml in wiere OSGi-bondel troch de nedige wizigingen oan te bringen.
Wy moatte earst dúdlik útdrukke dat ús doel is om in bondel te meitsjen.
Dan brûke wy de maven-bundle-plugin om de HelloWorld-klasse te pakken as in OSGi-bondel, mei hoflikens fan 'e Apache Felix-mienskip:
De wearden fan 'e OSGi-koppen dy't wy wolle opnimme yn' e MANIFEST-bestân fan 'e bondel binne spesifisearre yn' e ynstruksjeseksje.
Bundle-Activator is yndie de goed kwalifisearre namme fan 'e BundleActivator-oplossing dy't sil wurde brûkt om de bondel te starten en te stopjen. It is kompatibel mei de krekt oanmakke klasse.
Wylst it gjin OSGi-header is, ynstruearret de Private-Package-header de plugin om it pakket oan 'e bondel ta te foegjen, mar it gewoan net tagonklik te meitsjen foar oare plugins. It kommando mvn install moat brûkt wurde om de bondel te meitsjen.
De bondel ynstallearje en útfiere
Litte wy Karaf begjinne troch dit kommando út te fieren:
wêr "KARAF HOME" ferwiist nei de map dêr't Karaf waard ynsteld. Wy kinne it folgjende kommando brûke om de bondel te ynstallearjen as de Karaf-konsole-prompt ferskynt:
It brûken fan it lokale Maven-repository is hoe't Karaf wurdt ferteld om de bondel te laden.
Troch de numerike ID fan 'e bondel werom te jaan, skriuwt Karaf it út. Dizze ID kin ferskille ôfhinklik fan hoefolle bondels earder ynstalleare binne. De bondel is no mei súkses ynstalleare, en it kommando om it te starten is as folget:
Op it momint dat jo it pakket starte, wurdt "Hello World by Jay" werjûn. Wy kinne no de bondel stopje en fuortsmite mei:
De konsole toant "Goodbye World by Jay."
Konklúzje
Untwikkelders kinne maklik nije funksjonaliteit tafoegje oan in besteande webapplikaasje, wylst se feilich hâlde en isolearre wurde fan oare komponinten fan it haadprogramma troch OSGi te brûken.
Wy hawwe leard oer OSGi yn dizze post, ynklusyf hoe't it funksjonearret, syn foardielen, en in ienfâldich programma. It is net dreech om OSGi op te nimmen yn jo eigen applikaasje.
Lokkich kodearje!
Leave a Reply