Jy het reeds jou sagteware in plek, maar jy het steeds 'n meer effektiewe metode nodig om jou tegniese gebruikers in staat te stel om die platform uit te brei.
Alhoewel OSGi aan die meeste Java-ontwikkelaars bekend is, kan dit na 'n uitdagende taak lyk om dit in jou produk te integreer. Die gebrek aan duidelikheid oor OSGi se presiese werking verwar die pad vorentoe verder.
In teenstelling met enigiets waarmee hulle graag wil eksperimenteer, voel OSGi meer soos om die wye see na baie Java-ontwikkelaars te probeer vaar.
Hierdie artikel sal jou bekendstel aan die OSGi Felix-lente-tutoriaal deur 'n eenvoudige program te gebruik en deur te gaan, die voordele daarvan en ander belangrike besonderhede.
So, wat is OSGi?
Die skep en verspreiding van modules en komponente word moontlik gemaak deur die Java-raamwerk bekend as OSGi (Open Service Gateway Initiative).
Dit beklemtoon funksie-inkapseling en los koppeling, wat verskeie voordele aan ontwikkelaars bied, insluitend modulêre funksionaliteit wat geredelik oordraagbaar is tussen bronkodes en toetsing wat nie oneindige afhanklikhede benodig nie.
Hoe werk OSGi?
'n Dinamiese komponentstelsel vir Java word gedefinieer deur 'n stel spesifikasies genaamd OSGi. Hierdie spesifikasies maak 'n ontwikkelingsbenadering moontlik waar 'n toepassing uit 'n aantal dele gebou word en dan in bondels verpak word.
Plaaslike en netwerkgebaseerde dienste word deur hierdie komponente gebruik om te kommunikeer. Die doel is om die kernkode van die program so kompak as moontlik te maak. Hoë koppeling tussen hierdie kode en verskeie komponente is moontlik.
Die toepassing se herbruikbare bou-elemente word komponente genoem. Dink aan kenmerke soos 'n inkopiemandjie vir jou e-handelwebwerf of 'n betaalstaattoepassing vir jou personeelbestuurstelsel.
Komponente kan OSGi gebruik om hul implementerings van ander komponente weg te steek en slegs die nodige data aan hulle te verskaf via dienste.
Dit verhoed dat komponente onbedoeld data verander waartoe hulle nie toegang behoort te hê nie en bestuur afhanklikhede.
Alle verbindings tussen komponente in 'n OSGi-toepassing word gemaak deur dienste in 'n ideale wêreld. 'n Java-pakket bevat die API wat vir dienste gespesifiseer is.
Die samewerking tussen diensverskaffers en kliënte vereis die gebruik van klasse en/of koppelvlakke, wat die API uitmaak.
Al die OSGi-komponente word saam in bondels verpak, wat elkeen die hulpbronne insluit wat hulle benodig om te funksioneer. Bundels is baie duidelik oor wat hulle van die omgewing benodig en waartoe hulle in staat is.
Voordele
- OSGi-toepassings het toegang tot eksterne bondelbewaarplekke.
- Die raamwerk laat diensgerigte ontwerp op modulevlak toe.
- Dit maak dit moontlik om die weergawes en afhanklikhede van toepassingsbundels te bestuur benewens die standaardisering en maak dit makliker om derdeparty-biblioteke te integreer.
- Toepassings is meer aanpasbaar by veranderende eise, meer draagbaar en vinniger om te herontwerp.
- A web aansoek kan ontplooi word as 'n groep weergawes van OSGi-bundels met 'n dinamiese leeftyd danksy die raamwerk se integrasie met die Java EE-programmeringsmodel.
- In plaas daarvan om as 'n derdeparty-biblioteek as deel van die toepassing geïnstalleer te word, verskaf die raamwerk die verklarende samestelling en vaartbelynde eenheidstoetsing van die Spring Framework in 'n gestandaardiseerde vorm wat as deel van die toepassingsbediener se looptyd verskaf word.
- Vir korporatiewe toepassings wat bestaan uit verskeie weergawes van bundels met dinamiese lewensiklusse, bied die raamwerk isolasie.
- Dit bevat 'n geïntegreerde bondelbewaarplek wat gedeelde algemene en weergawe-bundels wat deur verskeie toepassings gebruik word, kan stoor, wat verhoed dat elke toepassing 'n aparte kopie van elke gedeelde biblioteek ontplooi.
Aan die gang met OSGi Felix lente
Kry die hulpbronne
Deur die aflaai van Apache Karaf se mees onlangse weergawe van hierdie site, kan ons ons OSGi-avontuur begin.
Gebaseer op Apache Felix, die Apache-implementering van die OSGi-spesifikasie, bied Apache Karaf 'n platform vir OSGi-gebaseerde toepassings.
Karaf bied verskeie nuttige kenmerke bo-op Felix wat ons sal help om ons vertroud te maak met OSGi, soos 'n opdragreëlkoppelvlak wat ons in staat sal stel om met die platform te kommunikeer.
Toegangspunt vir bondels
'n Toepassing moet as 'n OSGi-bundel verpak word voordat dit in 'n OSGi-omgewing uitgevoer kan word. Daarbenewens moet die aansoekintreepunt gespesifiseer word; dit is nie die standaard openbare statiese leemte hoof(String[] args) funksie nie.
So kom ons begin deur 'n "Hello Wêreld” aansoek gebaseer op OSGi.
Ons begin deur 'n basiese OSGi API-afhanklikheid te vestig:
Die OSGi-looptyd sal toegang tot die afhanklikheid hê, daarom hoef die bondel dit nie te bevat nie. Daarom word dit gemerk soos verskaf.
Kom ons skep nou die eenvoudige HelloWorld-klas:
Klasse wat as toegangspunte vir bondels optree, moet die OSGi-verskafde BundleActivator-koppelvlak implementeer.
Wanneer die bundel wat hierdie klas bevat, geloods word, roep die OSGi-platform die start()-funksie. Aan die ander kant, kort voordat die bundel gestop word, word die funksie stop() genoem.
Laat ons nie vergeet dat elke bondel net een BundleActivator kan hê nie. Beide maniere kan met die OSGi-looptyd kommunikeer deur die BundleContext-objek wat gegee word.
Skep 'n bondel
Maak die pom.xml 'n ware OSGi-bundel deur die nodige veranderinge aan te bring.
Ons moet eers duidelik uitdruk dat ons doel is om 'n bundel te produseer.
Dan gebruik ons die maven-bundle-plugin om die HelloWorld-klas as 'n OSGi-bundel te verpak, met vergunning van die Apache Felix-gemeenskap:
Die waardes van die OSGi-opskrifte wat ons in die bundel se MANIFEST-lêer wil insluit, word in die instruksies-afdeling gespesifiseer.
Bundle-Activator is inderdaad die behoorlik gekwalifiseerde naam van die BundleActivator-oplossing wat gebruik sal word om die bondel te begin en te stop. Dit is versoenbaar met die pasgeskepte klas.
Alhoewel dit nie 'n OSGi-opskrif is nie, gee die Private-Package-opskrif die inprop opdrag om die pakket by die bondel te voeg, maar dit net nie toeganklik vir ander inproppe te maak nie. Die mvn install opdrag moet gebruik word om die bondel te skep.
Die bundel installeer en laat loop
Kom ons begin Karaf deur hierdie opdrag uit te voer:
waar “KARAF HOME” verwys na die gids waar Karaf opgestel is. Ons kan die volgende opdrag gebruik om die bundel te installeer wanneer die Karaf-konsole-prompt verskyn:
Die gebruik van die plaaslike Maven-bewaarplek is hoe Karaf aangesê word om die bondel te laai.
Deur die bundel se numeriese ID terug te gee, skryf Karaf dit uit. Hierdie ID kan verskil afhangende van hoeveel bondels voorheen geïnstalleer is. Die bundel is nou suksesvol geïnstalleer, en die opdrag om dit te begin is soos volg:
Die oomblik wat jy die pakket bekendstel, verskyn "Hello World by Jay". Ons kan nou die bondel stop en verwyder deur:
Die konsole vertoon "Goodbye World by Jay."
Gevolgtrekking
Ontwikkelaars kan maklik nuwe funksionaliteit by 'n bestaande webtoepassing voeg terwyl dit veilig en geïsoleer word van ander komponente van die hoofprogram deur OSGi te gebruik.
Ons het in hierdie pos oor OSGi geleer, insluitend hoe dit funksioneer, die voordele daarvan en 'n eenvoudige program. Dit is nie moeilik om OSGi in jou eie toepassing te inkorporeer nie.
Gelukkige kodering!
Lewer Kommentaar