A szoftver már a helyén van, de még mindig szüksége van egy hatékonyabb módszerre, amely lehetővé teszi a technikai felhasználók számára a platform bővítését.
Annak ellenére, hogy az OSGi-t a legtöbb Java-fejlesztő jól ismeri, a termékbe integrálása ijesztő feladatnak tűnhet. Az OSGi pontos működésének tisztázatlansága tovább zavarja a továbbhaladást.
Ellentétben bármivel, amivel szeretnének kísérletezni, az OSGi sokkal inkább úgy érzi, hogy megpróbálja áthajózni a széles tengert sok Java fejlesztő számára.
Ez a cikk bemutatja az OSGi Felix tavaszi oktatóanyagot egy egyszerű program segítségével, és áttekinti, annak előnyeit és egyéb fontos részleteket.
Tehát mi az OSGi?
A modulok és összetevők létrehozását és terjesztését az OSGi (Open Service Gateway Initiative) néven ismert Java keretrendszer teszi lehetővé.
Hangsúlyozza a funkciók beágyazását és a laza csatolást, amely számos előnnyel jár a fejlesztők számára, beleértve a moduláris funkcionalitást, amely könnyen átvihető a forráskódok között, és a tesztelést, amely nem igényel végtelen függőséget.
Hogyan működik az OSGi?
A Java dinamikus komponensrendszerét egy OSGi nevű specifikáció határozza meg. Ezek a specifikációk olyan fejlesztési megközelítést tesznek lehetővé, amelyben egy alkalmazás több részből épül fel, majd csomagokba csomagolják.
Ezek a komponensek helyi és hálózatalapú szolgáltatásokat használnak a kommunikációhoz. A cél, hogy a program alapkódja a lehető legkompaktabb legyen. Ez a kód és több komponens közötti magas csatolás lehetséges.
Az alkalmazás újrafelhasználható épületelemeit komponenseknek nevezzük. Gondoljon olyan funkciókra, mint például a bevásárlókosár az e-kereskedelmi webhelyéhez vagy a bérszámfejtési alkalmazás a személyzeti menedzsment rendszeréhez.
A komponensek az OSGi segítségével elrejthetik implementációikat a többi komponens elől, és csak szolgáltatásokon keresztül biztosíthatják számukra a szükséges adatokat.
Ez megakadályozza, hogy az összetevők véletlenül megváltoztassák azokat az adatokat, amelyekhez nem kellene hozzáférniük, és kezeli a függőségeket.
Az OSGi-alkalmazások összetevői közötti összes kapcsolat egy ideális világ szolgáltatásai révén jön létre. A Java-csomag tartalmazza a szolgáltatásokhoz megadott API-t.
A szolgáltatók és az ügyfelek közötti együttműködéshez osztályok és/vagy interfészek használata szükséges, amelyek az API-t alkotják.
Az OSGi összes összetevője csomagokba van csomagolva, amelyek mindegyike tartalmazza a működéshez szükséges erőforrásokat. A kötegek teljesen világosak arról, hogy mire van szükségük a környezettől, és mire képesek.
Előnyök
- Az OSGi-alkalmazások hozzáférhetnek a külső csomagtárolókhoz.
- A keretrendszer szolgáltatás-orientált tervezést tesz lehetővé modulszinten.
- Lehetővé teszi az alkalmazáscsomagok verzióinak és függőségeinek kezelését a szabványosítás és a harmadik féltől származó könyvtárak integrálásának megkönnyítése mellett.
- Az alkalmazások jobban alkalmazkodnak a változó igényekhez, könnyebben hordozhatók és gyorsabban újratervezhetők.
- A webalkalmazás A keretrendszer Java EE programozási modellel való integrációjának köszönhetően dinamikus élettartammal rendelkező, változatos OSGi csomagok csoportjaként telepíthető.
- Ahelyett, hogy az alkalmazás részeként harmadik féltől származó könyvtárként telepítenék, a keretrendszer szabványosított formában biztosítja a Spring Framework deklaratív összeállítását és egyszerűsített egységtesztjét, amely az alkalmazáskiszolgáló futási környezetének részeként biztosított.
- A több verziójú, dinamikus életciklusú csomagból álló vállalati alkalmazásokhoz a keretrendszer elszigetelést kínál.
- Tartalmaz egy integrált csomagtárat, amely több alkalmazás által használt megosztott közös és verziószámú kötegeket képes tárolni, megakadályozva, hogy az egyes alkalmazások mindegyik megosztott könyvtárból külön példányt telepítsenek.
Kezdő lépések az OSGi Felix rugóval
Az erőforrások megszerzése
Az Apache Karaf legújabb verziójának letöltésével innen ezen az oldalon, kezdhetjük OSGi kalandunkat.
Az Apache Felixen, az OSGi specifikáció Apache megvalósításán alapuló Apache Karaf platformot biztosít az OSGi-alapú alkalmazásokhoz.
A Karaf a Felixen felül számos hasznos funkciót kínál, amelyek segítenek az OSGi megismerésében, például egy parancssori felület, amely lehetővé teszi számunkra, hogy kommunikáljunk a platformmal.
Csomagok belépési pontja
Az alkalmazást OSGi-kötegként kell csomagolni, mielőtt OSGi környezetben futtatható lenne. Ezenkívül meg kell adni az alkalmazás belépési pontját; ez nem a szabványos publikus static void main(String[] args) függvény.
Tehát kezdjük egy "Helló Világ” OSGi alapú alkalmazás.
Kezdjük azzal, hogy létrehozunk egy alapvető OSGi API-függőséget:
Az OSGi futtatókörnyezet hozzáfér a függőséghez, ezért a csomagnak nem kell tartalmaznia azt. Ezért szállítottként van megjelölve.
Most hozzuk létre az egyszerű HelloWorld osztályt:
A kötegek belépési pontjaként működő osztályoknak megvalósítaniuk kell az OSGi által biztosított BundleActivator felületet.
Amikor az ezt az osztályt tartalmazó köteg elindul, az OSGi platform meghívja a start() függvényt. A másik oldalon röviddel a köteg leállítása előtt a stop() függvény meghívódik.
Ne felejtsük el, hogy minden csomagban csak egy BundleActivator lehet. Mindkét mód kommunikálhat az OSGi futási környezettel a megadott BundleContext objektum használatával.
Csomag létrehozása
Tegye a pom.xml-t valódi OSGi-csomaggá a szükséges módosítások elvégzésével.
Először világosan ki kell fejeznünk, hogy célunk egy köteg létrehozása.
Ezután a maven-bundle-plugin segítségével OSGi csomagként csomagoljuk a HelloWorld osztályt, az Apache Felix közösség jóvoltából:
Az OSGi fejlécek értékeit, amelyeket a csomag MANIFEST fájljába kívánunk foglalni, az utasítások részben adjuk meg.
A Bundle-Activator valóban a csomag elindításához és leállításához használt BundleActivator megoldás megfelelő minősítésű neve. Kompatibilis a most létrehozott osztállyal.
Bár nem OSGi fejléc, a Private-Package fejléc utasítja a beépülő modult, hogy adja hozzá a csomagot a csomaghoz, de ne tegye elérhetővé más beépülő modulok számára. Az mvn install parancsot kell használni a köteg létrehozásához.
A csomag telepítése és futtatása
Kezdjük a Karaf futtatásával a következő paranccsal:
ahol a „KARAF HOME” arra a mappára utal, ahol a Karafot beállították. A következő paranccsal telepíthetjük a csomagot, amikor megjelenik a Karaf konzol parancssora:
Karaf a helyi Maven adattár használatával kapja meg a csomag betöltését.
A köteg numerikus azonosítóját visszaadva Karaf kiírja. Ez az azonosító eltérő lehet attól függően, hogy hány csomagot korábban telepítettek. A csomag telepítése sikeresen megtörtént, és az elindításához szükséges parancs a következő:
Abban a pillanatban, amikor elindítja a csomagot, megjelenik a „Hello World by Jay” felirat. Most megállíthatjuk és eltávolíthatjuk a köteget a következő módon:
A konzolon megjelenik a „Goodbye World by Jay” felirat.
Következtetés
A fejlesztők könnyen hozzáadhatnak új funkciókat egy meglévő webalkalmazáshoz, miközben az OSGi használatával biztonságosan és a fő program egyéb összetevőitől elkülönítve tartják azt.
Ebben a bejegyzésben megismerkedtünk az OSGi-vel, beleértve a működését, előnyeit és egy egyszerű programot. Nem nehéz beépíteni az OSGi-t saját alkalmazásába.
Boldog kódolást!
Hagy egy Válaszol