Svůj software již máte na svém místě, ale stále potřebujete efektivnější způsob, jak umožnit svým technickým uživatelům rozšířit platformu.
Přestože OSGi je většině vývojářů v Javě dobře známo, jeho integrace do vašeho produktu se může zdát jako skličující úkol. Nedostatek jasnosti ohledně přesného fungování OSGi dále zamotává cestu vpřed.
Na rozdíl od čehokoli, s čím by chtěli experimentovat, OSGi mnoha vývojářům v Javě připadá spíše jako pokus o plavbu po širém moři.
Tento článek vás seznámí s jarním tutoriálem OSGi Felix pomocí jednoduchého programu a probere jeho výhody a další důležité detaily.
Co je tedy OSGi?
Vytváření a distribuce modulů a komponent umožňuje Java framework známý jako OSGi (Open Service Gateway Initiative).
Klade důraz na zapouzdření funkcí a volné propojení, které nabízí vývojářům několik výhod, včetně modulární funkčnosti, kterou lze snadno přenášet mezi zdrojovými kódy, a testování, které nevyžaduje nekonečné závislosti.
Jak OSGi funguje?
Dynamický komponentní systém pro Javu je definován sadou specifikací nazývaných OSGi. Tyto specifikace umožňují vývojový přístup, kdy je aplikace sestavena z několika částí a poté zabalena do balíčků.
Tyto komponenty používají ke komunikaci místní a síťové služby. Cílem je učinit základní kód programu co nejkompaktnější. Je možná vysoká vazba mezi tímto kódem a několika komponentami.
Opakovaně použitelné stavební prvky aplikace se nazývají komponenty. Přemýšlejte o funkcích, jako je nákupní košík pro váš web elektronického obchodu nebo mzdová aplikace pro váš systém řízení zaměstnanců.
Komponenty mohou pomocí OSGi skrýt své implementace před ostatními komponentami a poskytovat jim pouze potřebná data prostřednictvím služeb.
To zabraňuje komponentám v neúmyslné změně dat, ke kterým by neměly mít přístup, a spravuje závislosti.
Všechna spojení mezi komponentami v aplikaci OSGi se uskutečňují prostřednictvím služeb v ideálním světě. Balíček Java obsahuje rozhraní API určené pro služby.
Spolupráce mezi poskytovateli služeb a zákazníky vyžaduje použití tříd a/nebo rozhraní, které tvoří API.
Všechny součásti OSGi jsou zabaleny společně v balíčcích, z nichž každý obsahuje prostředky, které potřebují k fungování. Bundle mají celkem jasno v tom, co od okolí potřebují a čeho jsou schopni.
Výhody
- Aplikace OSGi mají přístup k externím úložištím svazků.
- Rámec umožňuje servisně orientovaný design na úrovni modulů.
- Kromě standardizace a usnadnění integrace knihoven třetích stran umožňuje spravovat verze a závislosti aplikačních balíčků.
- Aplikace jsou přizpůsobivější měnícím se požadavkům, jsou přenosnější a rychleji reengineering.
- A webové aplikace lze nasadit jako skupinu verzovaných balíčků OSGi s dynamickou životností díky integraci frameworku s programovacím modelem Java EE.
- Namísto instalace jako knihovny třetí strany jako součásti aplikace poskytuje framework deklarativní sestavení a zjednodušené testování jednotek Spring Frameworku ve standardizované podobě, která je poskytována jako součást běhu aplikačního serveru.
- Pro podnikové aplikace složené z několika verzovaných balíčků s dynamickými životními cykly nabízí rámec izolaci.
- Obsahuje integrované úložiště svazků, které může ukládat sdílené společné a verzované balíčky používané několika aplikacemi, což každé aplikaci brání v nasazení samostatné kopie každé sdílené knihovny.
Začínáme s OSGi Felix spring
Získání zdrojů
Stažením nejnovější verze Apache Karaf z Tato stránka, můžeme začít naše OSGi dobrodružství.
Apache Karaf, založený na Apache Felix, Apache implementaci specifikace OSGi, poskytuje platformu pro aplikace založené na OSGi.
Karaf poskytuje nad Felix různé užitečné funkce, které nám pomohou seznámit se s OSGi, jako je rozhraní příkazového řádku, které nám umožní komunikovat s platformou.
Vstupní bod pro balíčky
Aplikace musí být před spuštěním v prostředí OSGi zabalena jako balík OSGi. Navíc musí být specifikován vstupní bod aplikace; není to standardní veřejná statická funkce void main(String[] args).
Začněme tedy vytvořením „Ahoj světe” aplikace založená na OSGi.
Začneme vytvořením základní závislosti OSGi API:
Runtime OSGi bude mít přístup k závislosti, proto ji balíček nemusí obsahovat. Proto je označen jako dodaný.
Nyní vytvoříme přímočarou třídu HelloWorld:
Třídy, které fungují jako vstupní body pro balíčky, musí implementovat rozhraní BundleActivator poskytované OSGi.
Když se spustí balíček obsahující tuto třídu, platforma OSGi zavolá funkci start(). Na druhé straně, krátce před zastavením svazku, je zavolána funkce stop().
Nezapomínejme, že každý balíček může mít pouze jeden BundleActivator. Oba způsoby mohou komunikovat s runtime OSGi pomocí objektu BundleContext, který je dán.
Vytvoření balíčku
Udělejte z pom.xml skutečný balík OSGi provedením nezbytných změn.
Nejprve musíme jasně vyjádřit, že naším cílem je vytvořit balíček.
Poté použijeme plugin maven-bundle-plugin k zabalení třídy HelloWorld jako balíku OSGi, s laskavým svolením komunity Apache Felix:
Hodnoty hlaviček OSGi, které chceme zahrnout do souboru MANIFEST balíčku, jsou uvedeny v části s pokyny.
Bundle-Activator je skutečně správně kvalifikovaný název řešení BundleActivator, které bude použito ke spuštění a zastavení balíčku. Je kompatibilní s právě vytvořenou třídou.
I když to není hlavička OSGi, hlavička Private-Package instruuje plugin, aby přidal balíček do balíčku, ale prostě jej nezpřístupnil jiným pluginům. K vytvoření balíčku by měl být použit příkaz mvn install.
Instalace a spuštění balíčku
Začněme Karaf spuštěním tohoto příkazu:
kde „KARAF HOME“ odkazuje na složku, kde byl Karaf nastaven. Když se objeví výzva konzole Karaf, můžeme použít následující příkaz k instalaci balíčku:
Pomocí místního úložiště Maven je Karafovi řečeno, aby načetl balíček.
Karaf vrací číselné ID balíčku a zapisuje ho. Toto ID se může lišit v závislosti na počtu dříve nainstalovaných balíčků. Balíček byl nyní úspěšně nainstalován a příkaz k jeho spuštění je následující:
Ve chvíli, kdy balíček spustíte, zobrazí se „Hello World by Jay“. Nyní můžeme svazek zastavit a odstranit pomocí:
Na konzole se zobrazí „Goodbye World by Jay“.
Proč investovat do čističky vzduchu?
Vývojáři mohou pomocí OSGi snadno přidávat nové funkce do stávající webové aplikace a zároveň ji udržovat zabezpečenou a izolovanou od ostatních součástí hlavního programu.
V tomto příspěvku jsme se dozvěděli o OSGi, včetně toho, jak funguje, jeho výhody a přímočarý program. Začlenit OSGi do vlastní aplikace není těžké.
Šťastné programování!
Napsat komentář