Létrehozása moduláris alkalmazások java
Köztudott, hogy a Java programozási nyelv nem támogatja a modularitás. Ez a probléma már észre sokáig, ott többször megkísérelték, hogy orvosolja a helyzetet. Mi elsősorban beszélünk a projekt Jigsaw.
Kirakós - puzzle (kirakós játék, amelyben az egyes darabokat, hogy a képet meg kell összeadni). Minden darab (modul) csatlakozik a többi (interfészeken keresztül) annak érdekében, hogy teljes képet kapjunk (a szoftver).
Tehát mi a modularitás, melyek az előnyei a moduláris felépítés a szoftver, és mit kell tennie, mielőtt az Advent a Java 9? A moduláris szoftver architektúra - egy megközelítés kialakítása, amelyben a program oszlik független komponenst, amely kölcsönhatásba maguk közül egyértelműen ismertetni szerződéseket. Ezek a komponensek - modulok - kell számos olyan tulajdonsággal bírnak. Először - beágyazás (ezek elrejteni azok végrehajtását a külső környezet), a második - gyenge kapcsolat (modulok kölcsönhatásba csak a segítségével előre megkötött szerződések), a harmadik - dinamika (esetleges helyettesítés „on the fly”, anélkül, hogy állítsa le a teljes alkalmazás).
Mi a teendő, ha a feladat az, hogy dolgozzon ki egy valóban moduláris felépítésű Java? Segítség jön OSGi (Open Services Gateway Initiative) - dinamikus modul rendszer specifikációja és szolgáltatási platform Java-alapú alkalmazások által kifejlesztett OSGi Alliance. A leírás a modell a szoftverfejlesztés, amelyben a komponensek mind a három fent említett jellemzőkkel. A koncepció alapján az OSGi 2 szervezetek: készletek (csomagok) és a szolgáltatások (Services).
beállítja OSGi
Szoftverfejlesztés Java, jellemzően harmadik fél könyvtárak. A világ a Java könyvtárak vannak csomagolva speciális fájlokat a JAR (Java Archive). Ez egy normális ZIP-fájl, amely tartalmazza a Java-osztály (.class kiterjesztésű fájlok). A könyvtárhasználati társítható bizonyos nehézségek.
Ha elkezdi használni minden könyvtárat az alkalmazás, akkor általában elérhetővé válik minden osztály a könyvtárban. A tény az, hogy a könyvtár a fejlesztők nem lehet elrejteni osztályok végrehajtására használják a belső logika. Így, ha ön használ egy kód, ami nem tervezett kívüli használatra a könyvtár, akkor találkozhat inkompatibilitás az új verzió a könyvtár, vagy megzavarják a helyes működés.
A másik probléma az úgynevezett JAR pokol. Sok fejlesztő törött sok másolatai. A lényeg az, hogy ha egyszer már a projekt kezdetén kell használni különböző változatait ugyanabban a könyvtárban (általában egy nagy léptékű projektek, amelyek idővel változhatnak), akkor találkozhat a helyzet, amikor egy és ugyanazon osztályba tartozó különböző módszerekkel a különböző változatai a könyvtárban. Java úgy van kialakítva, hogy az első változat a könyvtár, amely osztálybetöltője kerül felhasználásra. Így, utalva a kódot minden osztályban futási időben, akkor kap egy hiba, hogy az eljárás, amelyre utalnak, nem létezik. Ez annak a ténynek köszönhető, hogy a Java futtatási nem tudni semmit a könyvtár verzióját kell használni egy adott ügyben.
Érdemes megjegyezni, hogy a fejlesztők úgy döntött, hogy nem változtatja meg OSGi JAR-fájl szerkezetét, hogy biztosítsa a modularitás és egyszerűen adjuk nekik további információkat, amelyekkel a OSGi környezetben. Sőt, ez a kiegészítő információ nem befolyásolja a használatát a JAR-fájlt a szokásos Java-alkalmazások. Tehát, hogy a JAR-fájl vált OSGi-set, teszi hozzá adatokat, hogy meghatározza, melyik csomagok a készlet áll rendelkezésre kívüli használatra (Export-csomag), valamint minden egyéb készletek csomagok ehhez szükséges set (Import-Package). Lehetőség van beállítva, mint egy API verzió, amely egy sor egyéb készletek, és a változat vagy tartomány API-verziók, amelyek egy sor igények munkájuk tőlük is. Minden sor osztályok, amelyek nem az export részén nem állnak rendelkezésre kívül meg (Private). Ily módon egy sor OSGi-felelnie a gyenge kapcsolat.
Most a legtöbb Java-könyvtárak már OSGi kész, azaz információt szolgáltat a lehetőségét, hogy a be-OSGi konténer. Szintén sokan vannak eszközök és segédprogramok, amelyek lehetővé teszik, hogy a megszokottól JAR-fájl modulok OSGi.
Ábra. 1. Import / export csomagok OSGi-készlet
Mivel a kapcsolat a sorozatok között és interfészek, amelyeket ezek a rendelkezések világos változata végre OSGi keret megkönnyíti, hogy ne JAR pokolba helyzeteket, hogy már a fent leírt.
Így kissé kiterjesztve a szokásos leírás JAR-fájlt, és hozzá támogatás a leírásban a futási, OSGi-közösség megoldja a problémát létrehozásának modulok Java. OSGi futásidejű dinamikusan és berakodása az új készlet futásidőben. Sőt, OSGi pályák közötti függőségeket készletek és dinamikusan megoldja őket.
OSGi szolgáltatások
Szóval, a OSGi-készletek, tudjuk fejleszteni a moduláris alkalmazások, amelyek kölcsönhatásba lépnek át (API). Felmerül a kérdés: hol, hogy egy osztály, amely megvalósítja a szükséges felület? Hozzá egy osztály az új API - egy rossz döntés, mert A moduláris felépítés, már megállapodtak abban, hogy nem használja belső osztályok n kívül ezeket a csomagokat. Lehetséges lenne, hogy a „gyári” minta végrehajtani a felület és add hozzá az új API, de minden alkalommal, hogy dolgozzon ki egy új osztályt, hogy elrejtse a végrehajtása a felületen is látszik, nem a legjobb ötlet.
OSGi megoldja a problémát találni végrehajtásának a kezelőfelületet szolgáltatás adatbázis. A kit lehet regisztrálni végrehajtása leírható az interfész a szolgáltatás adatbázis. Set, amely egy felületet egy másik kereshetnek a nyilvántartásban a szükséges végrehajtását a kívánt felületet is. Jellemzően a készlet voltak rögzítve Start szolgáltatások a OSGi-tartályba. Továbbá ugyanazon a felületen különböző implementációk és további azonosító adatokat lehet registry szolgáltatás. Ebben a készlet, amely őt keresi a nyilvántartásban a kért szolgáltatás lehet választani a legmegfelelőbb (például szűrésével).
Mikroservisnaya építészet a Java Virtual Machine
- A könnyű (a fejlesztés megvalósítása mikroservisa végre csak egy bizonyos részét a funkciót. Ebben az esetben nincs szükség aggódni más részein a program).
- Könnyű csere (ha úgy dönt, hogy a jelenlegi végrehajtása a szolgáltatást nem végzi a dolgát, akkor könnyen másolni, és helyette egy új változata anélkül, hogy más a program egyes részeit. Sőt, megállás nélkül a jelenlegi szoftver).
- Újrafelhasználása (például mikroservis végez az egyik kis probléma, akkor lehet újra használni, ha szükséges).
Mint látható a fenti leírás, a fejlesztők a moduláris alkalmazások OSGi régóta élvezte minden előnyét mikroservisnoy építészet, de csak a keretet a Java virtuális gép. Mindegyik készlet OSGi, amely közzéteszi a szolgáltatást a nyilvántartás, az mikroservisom belül a Java Virtual Machine, JVM (a világon a OSGi nevezik mikroservisy μServices).
Red Hat JBoss Fuse
Mi vagyunk a közepén szoftver megoldások használata minden előnyét OSGi szoftverfejlesztés a távközlési szolgáltatók, biztosítók, a feldolgozó vállalatok. Ehhez használjuk a terméket Red Hat JBoss Fuse, nevezetesen a konfiguráció Fuse szövet. JBoss Fuse platform egy rugalmas környezet OSGi teljesítményű moduláris alkalmazásokat.
Ma, a szoftver ilyen igényeket az üzleti folytonosság, a képesség, hogy könnyen scale-out, könnyű telepítés, és a rendelkezésre álló klaszter menedzsment eszközök cluster szoftver. Biztosíték Fabric megoldja ezeket a problémákat. A technológia lehetővé teszi, hogy telepíteni több példányát a Red Hat JBoss Fuse és összekapcsolják őket egy klaszter és központosított irányítási eszköz kapott környezetben.
Ennek része a Fuse Fabric, a következő absztrakció:
- Jellemzők (jellemzők) - a készlet a OSGi-halmazt végre olyan funkcionalitást.
- Profiles (profilok) - a szolgáltatásokhoz, amelyek el kell végezni egy tartályban, és konfigurációs beállításokat határozza meg, hogy szerepelnek a funkciót.
- Konténerek (tartályok) - egyéni JVM-folyamatok futnak egy adott csomóponton klaszter Fuse Fabric Red Hat JBoss Fuse tartályba.
Ábra. 3. A hierarchia szervezetek Fuse Fabric
Tehát minden olyan szoftver, amely alapul biztosíték Fabric technológia abból áll, OSGi-készletek vannak csoportosítva jellemzői és belül alkalmazták egyetlen JVM-folyamat egy vagy több csomópont a fürt megfelelően egy előre meghatározott profilt.
Szerda Fuse Fabric tartalmaz sok olyan eszköz, amely megkönnyíti, hogy ellenőrizzék a termelési klaszterek. Mi lehet profilokat létrehozni, profil alapú létrehozni konténerek, hozzon létre / törlés / start / stop a konténerek bármely fogadó, amely része egy klaszter, csatlakoztassa az új csomópontok stb És mindezen intézkedéseket el tudjuk végezni az interneten, azaz működésének megszakítása nélkül a többi csomópont a klaszter. Környezetvédelmi támogatja képes tárolni több változatát profilok, funkciók, OSGi-készletek.
A kapott közepes OSGi-készletek kölcsönhatásba nem csak egyetlen tartályban, hanem hívják egymást belül különböző konténerek (még a különböző gépeken). Ez a lehetőség biztosítja a Distributed OSGi technológia. Ezen kívül - minimális fejlesztési költségek - minden szolgáltatás, amely OSGi-set lehet alakítani REST / web-szolgáltatás, amelyet nevezhetünk külső rendszereket.
Így, a Fuse szövet, mi is létrehozhatunk mikroservisnuyu architektúra, amely elősegíti a könnyű konfigurációt és telepítését, az izolált szolgáltatások teljesítése belül JVM-folyamatok (specifikus beállítások, például, különböző beállításokat a szemétgyűjtő), a szolgáltatások kölcsönhatásba egymással hálózat segítségével egy könnyű protokoll.
mert termék Red Hat JBoss Fuse alapul Open Source köteg Apache ServiceMix technológia a rendelkezésünkre álló, vannak erős technológiák, mint például az Apache ActiveMQ (végrehajtása a JMS leírás), Apache Camel (végrehajtása a vállalati alkalmazás tervezési minták), Apache CXF (könyvtár REST / webfejlesztés -Service), Blueprint (előírja függőség injekció képességek), Spring, stb Mivel ezek a technológiák zökkenőmentesen integrálható egymással Red Hat JBoss Fuse, ez jelentősen csökkenti a fejlesztési időt kívánt funkciókat.