Už máte svoj softvér na svojom mieste, ale stále potrebujete efektívnejší spôsob, ako umožniť vašim technickým používateľom rozšíriť platformu.
Aj keď je OSGi väčšine vývojárov Java dobre známy, jeho integrácia do vášho produktu sa môže zdať ako náročná úloha. Nejasnosť o presnom fungovaní OSGi ďalej mätie cestu vpred.
Na rozdiel od čohokoľvek, s čím by chceli experimentovať, OSGi mnohým vývojárom Java pripadá skôr ako pokus o plavbu po šírom mori.
Tento článok vám predstaví jarný tutoriál OSGi Felix pomocou jednoduchého programu a prevedie vás, jeho výhody a ďalšie dôležité detaily.
Čo je teda OSGi?
Vytváranie a distribúciu modulov a komponentov umožňuje Java framework známy ako OSGi (Open Service Gateway Initiative).
Zdôrazňuje zapuzdrenie funkcií a voľné prepojenie, ktoré vývojárom ponúka niekoľko výhod, vrátane modulárnej funkčnosti, ktorá je ľahko prenosná medzi zdrojovými kódmi a testovania, ktoré nevyžaduje nekonečné závislosti.
Ako OSGi funguje?
Systém dynamických komponentov pre Java je definovaný súborom špecifikácií nazývaných OSGi. Tieto špecifikácie umožňujú vývojový prístup, pri ktorom je aplikácia zostavená z niekoľkých častí a potom zabalená do balíkov.
Tieto komponenty používajú na komunikáciu lokálne a sieťové služby. Cieľom je urobiť základný kód programu čo najkompaktnejší. Je možné vysoké prepojenie medzi týmto kódom a niekoľkými komponentmi.
Opätovne použiteľné stavebné prvky aplikácie sa nazývajú komponenty. Zamyslite sa nad funkciami, ako je nákupný košík pre vašu webovú stránku elektronického obchodu alebo mzdová aplikácia pre váš systém riadenia zamestnancov.
Komponenty môžu pomocou OSGi skryť svoje implementácie pred ostatnými komponentmi a poskytnúť im iba potrebné údaje prostredníctvom služieb.
To zabraňuje komponentom v neúmyselnej zmene údajov, ku ktorým by nemali mať prístup, a spravuje závislosti.
Všetky spojenia medzi komponentmi v aplikácii OSGi sa uskutočňujú prostredníctvom služieb v ideálnom svete. Balík Java obsahuje API, ktoré je špecifikované pre služby.
Spolupráca medzi poskytovateľmi služieb a zákazníkmi si vyžaduje použitie tried a/alebo rozhraní, ktoré tvoria API.
Všetky komponenty OSGi sú zabalené spolu v balíkoch, z ktorých každý obsahuje zdroje, ktoré potrebujú na fungovanie. Bundle majú celkom jasno v tom, čo od okolia potrebujú a čoho sú schopné.
Výhody
- Aplikácie OSGi majú prístup k externým úložiskám balíkov.
- Rámec umožňuje servisne orientovaný dizajn na úrovni modulov.
- Okrem štandardizácie a uľahčenia integrácie knižníc tretích strán umožňuje spravovať verzie a závislosti balíkov aplikácií.
- Aplikácie sú prispôsobiteľnejšie meniacim sa požiadavkám, sú prenosnejšie a rýchlejšie sa menia.
- A webová aplikácia možno nasadiť ako skupinu verziovaných balíkov OSGi s dynamickou životnosťou vďaka integrácii rámca s programovacím modelom Java EE.
- Namiesto toho, aby bol rámec inštalovaný ako knižnica tretej strany ako súčasť aplikácie, poskytuje rámec deklaratívne zostavenie a zjednodušené testovanie jednotiek Spring Frameworku v štandardizovanej forme, ktorá je poskytovaná ako súčasť runtime aplikačného servera.
- Pre podnikové aplikácie zložené z niekoľkých verziovaných balíkov s dynamickým životným cyklom ponúka rámec izoláciu.
- Obsahuje integrované úložisko balíkov, ktoré môže ukladať zdieľané spoločné a verziované balíky používané niekoľkými aplikáciami, čím bráni každej aplikácii nasadiť samostatnú kópiu každej zdieľanej knižnice.
Začíname s pružinou OSGi Felix
Získanie zdrojov
Stiahnutím najnovšej verzie Apache Karaf z Táto stránka, môžeme začať naše OSGi dobrodružstvo.
Na základe Apache Felix, implementácie špecifikácie OSGi Apache, Apache Karaf poskytuje platformu pre aplikácie založené na OSGi.
Karaf poskytuje nad Felix rôzne užitočné funkcie, ktoré nám pomôžu zoznámiť sa s OSGi, ako napríklad rozhranie príkazového riadku, ktoré nám umožní komunikovať s platformou.
Vstupný bod pre zväzky
Aplikácia musí byť pred spustením v prostredí OSGi zabalená ako balík OSGi. Okrem toho musí byť špecifikovaný vstupný bod aplikácie; nie je to štandardná verejná statická funkcia void main(String[] args).
Začnime teda vytvorením „Ahoj svet” aplikácia založená na OSGi.
Začneme vytvorením základnej závislosti OSGi API:
Runtime OSGi bude mať prístup k závislosti, preto ju balík nemusí obsahovať. Preto je označený ako dodaný.
Teraz vytvoríme priamu triedu HelloWorld:
Triedy, ktoré fungujú ako vstupné body pre balíky, musia implementovať rozhranie BundleActivator poskytované OSGi.
Keď sa spustí balík obsahujúci túto triedu, platforma OSGi zavolá funkciu start(). Na druhej strane, krátko pred zastavením zväzku sa zavolá funkcia stop().
Nezabúdajme, že každý balík môže mať iba jeden BundleActivator. Obidva spôsoby môžu komunikovať s runtime OSGi pomocou objektu BundleContext, ktorý je daný.
Vytvorenie balíka
Urobte z pom.xml skutočný balík OSGi vykonaním potrebných zmien.
Najprv musíme jasne vyjadriť, že naším cieľom je vyrobiť balík.
Potom použijeme doplnok maven-bundle-plugin na zabalenie triedy HelloWorld ako balík OSGi, s láskavým dovolením komunity Apache Felix:
Hodnoty hlavičiek OSGi, ktoré chceme zahrnúť do súboru MANIFEST balíka, sú špecifikované v časti s pokynmi.
Bundle-Activator je skutočne správne kvalifikovaný názov riešenia BundleActivator, ktorý sa použije na spustenie a zastavenie balíčka. Je kompatibilný s práve vytvorenou triedou.
Aj keď to nie je hlavička OSGi, hlavička Private-Package dáva pokyn doplnku, aby pridal balíček do balíka, ale nesprístupnil ho iným doplnkom. Na vytvorenie balíka by sa mal použiť príkaz mvn install.
Inštalácia a spustenie balíka
Začnime Karaf spustením tohto príkazu:
kde „KARAF HOME“ označuje priečinok, v ktorom bol nastavený Karaf. Keď sa zobrazí výzva konzoly Karaf, na inštaláciu balíka môžeme použiť nasledujúci príkaz:
Pomocou miestneho úložiska Maven je Karafovi povedané, aby načítal balík.
Karaf vráti číselné ID zväzku a zapíše ho. Toto ID sa môže líšiť v závislosti od toho, koľko balíkov bolo predtým nainštalovaných. Balík je teraz úspešne nainštalovaný a príkaz na jeho spustenie je nasledujúci:
Vo chvíli, keď balík spustíte, zobrazí sa „Hello World by Jay“. Teraz môžeme zväzok zastaviť a odstrániť pomocou:
Na konzole sa zobrazí „Goodbye World by Jay“.
záver
Vývojári môžu jednoducho pridať nové funkcie do existujúcej webovej aplikácie, pričom ju udržia v bezpečí a izolovanú od ostatných komponentov hlavného programu pomocou OSGi.
V tomto príspevku sme sa dozvedeli o OSGi vrátane toho, ako funguje, jeho výhody a jednoduchý program. Začleniť OSGi do vlastnej aplikácie nie je ťažké.
Šťastné kódovanie!
Nechaj odpoveď