Du har redan din programvara på plats, men du behöver fortfarande en mer effektiv metod för att göra det möjligt för dina tekniska användare att utöka plattformen.
Även om OSGi är välkänt för de flesta Java-utvecklare, kan det verka som en skrämmande uppgift att integrera den i din produkt. Bristen på tydlighet om OSGis exakta funktion förvirrar vägen framåt ytterligare.
Till skillnad från allt de skulle vilja experimentera med, känns OSGi mer som att försöka segla vid havet för många Java-utvecklare.
Den här artikeln kommer att introducera dig till OSGi Felix vårhandledning med hjälp av ett enkelt program och gå igenom dess fördelar och andra viktiga detaljer.
Så vad är OSGi?
Att skapa och distribuera moduler och komponenter möjliggörs av Java-ramverket som kallas OSGi (Open Service Gateway Initiative).
Den betonar funktionsinkapsling och lös koppling, vilket erbjuder flera fördelar för utvecklare, inklusive modulär funktionalitet som lätt kan överföras mellan källkoder och tester som inte behöver oändliga beroenden.
Hur fungerar OSGi?
Ett dynamiskt komponentsystem för Java definieras av en uppsättning specifikationer som kallas OSGi. Dessa specifikationer möjliggör ett utvecklingssätt där en applikation byggs av ett antal delar och sedan paketeras i paket.
Lokala och nätverksbaserade tjänster används av dessa komponenter för att kommunicera. Syftet är att göra programmets kärnkod så kompakt som möjligt. Hög koppling mellan denna kod och flera komponenter är möjlig.
Applikationens återanvändbara byggelement kallas komponenter. Tänk på funktioner som en kundvagn för din e-handelswebbplats eller en löneapplikation för ditt personalledningssystem.
Komponenter kan använda OSGi för att dölja sina implementeringar från andra komponenter och endast tillhandahålla nödvändig data till dem via tjänster.
Detta förhindrar komponenter från att oavsiktligt ändra data som de inte borde ha tillgång till och hanterar beroenden.
Alla kopplingar mellan komponenter i en OSGi-applikation görs genom tjänster i en ideal värld. Ett Java-paket innehåller API:et som är specificerat för tjänster.
Samarbetet mellan tjänsteleverantörer och kunder kräver användning av klasser och/eller gränssnitt, som utgör API:et.
Alla OSGi-komponenter är förpackade i paket, som var och en inkluderar de resurser de behöver för att fungera. Paketen är ganska tydliga med vad de behöver av miljön och vad de kan.
Fördelar
- OSGi-applikationer har tillgång till externa paketförråd.
- Ramverket tillåter serviceinriktad design på modulnivå.
- Det gör det möjligt att hantera versioner och beroenden av applikationspaket förutom att standardisera och göra det enklare att integrera tredjepartsbibliotek.
- Applikationer är mer anpassningsbara till förändrade krav, mer bärbara och snabbare att omarbeta.
- A webbapplikation kan distribueras som en grupp versioner av OSGi-paket med en dynamisk livslängd tack vare ramverkets integration med Java EE-programmeringsmodellen.
- Istället för att installeras som ett tredjepartsbibliotek som en del av applikationen tillhandahåller ramverket den deklarativa sammansättningen och strömlinjeformade enhetstestningen av Spring Framework i en standardiserad form som tillhandahålls som en del av applikationsserverns körning.
- För företagsapplikationer som består av flera versionspaket med dynamiska livscykler erbjuder ramverket isolering.
- Den innehåller ett integrerat paketlager som kan lagra delade gemensamma och versionerade paket som används av flera applikationer, vilket förhindrar varje applikation från att distribuera en separat kopia av varje delat bibliotek.
Komma igång med OSGi Felix spring
Få resurserna
Genom att ladda ner Apache Karafs senaste version från den här webbplatsen, kan vi börja vårt OSGi-äventyr.
Baserat på Apache Felix, Apache-implementeringen av OSGi-specifikationen, tillhandahåller Apache Karaf en plattform för OSGi-baserade applikationer.
Karaf tillhandahåller olika användbara funktioner ovanpå Felix som kommer att hjälpa oss att bekanta oss med OSGi, till exempel ett kommandoradsgränssnitt som gör det möjligt för oss att kommunicera med plattformen.
Ingångspunkt för paket
En applikation måste paketeras som ett OSGi-paket innan den kan köras i en OSGi-miljö. Dessutom måste applikationens startpunkt specificeras; det är inte standardfunktionen för public static void main(String[] args).
Så låt oss börja med att skapa en "Hej Världen” applikation baserad på OSGi.
Vi börjar med att etablera ett grundläggande OSGi API-beroende:
OSGi runtime kommer att ha tillgång till beroendet, därför behöver paketet inte innehålla det. Därför är den märkt som levererad.
Låt oss nu skapa den enkla HelloWorld-klassen:
Klasser som fungerar som startpunkter för paket måste implementera det OSGi-försedda BundleActivator-gränssnittet.
När paketet som innehåller denna klass startas anropar OSGi-plattformen start()-funktionen. På andra sidan, strax innan bunten stoppas, anropas funktionen stop().
Låt oss inte glömma att varje paket bara kan ha en BundleActivator. Båda sätten kan kommunicera med OSGi-körtiden med hjälp av det angivna BundleContext-objektet.
Skapa ett paket
Gör pom.xml till ett riktigt OSGi-paket genom att göra nödvändiga ändringar.
Vi måste först tydligt uttrycka att vårt mål är att producera ett paket.
Sedan använder vi maven-bundle-plugin för att paketera HelloWorld-klassen som ett OSGi-paket, med tillstånd från Apache Felix-communityt:
Värdena för OSGi-huvudena som vi vill inkludera i paketets MANIFEST-fil anges i instruktionerna.
Bundle-Activator är verkligen det korrekt kvalificerade namnet på BundleActivator-lösningen som kommer att användas för att starta och stoppa paketet. Den är kompatibel med den nyss skapade klassen.
Även om det inte är ett OSGi-huvud, instruerar Private-Package-huvudet pluginet att lägga till paketet i paketet men inte göra det tillgängligt för andra plugins. Kommandot mvn install bör användas för att skapa paketet.
Installera och köra paketet
Låt oss börja Karaf genom att köra detta kommando:
där "KARAF HOME" hänvisar till mappen där Karaf installerades. Vi kan använda följande kommando för att installera paketet när Karaf-konsolprompten visas:
Att använda det lokala Maven-förrådet är hur Karaf uppmanas att ladda bunten.
Karaf returnerar paketets numeriska ID och skriver ut det. Detta ID kan skilja sig beroende på hur många paket som tidigare har installerats. Paketet har nu installerats och kommandot för att starta det är som följer:
I samma ögonblick som du startar paketet visas "Hello World by Jay". Vi kan nu stoppa och ta bort paketet med:
Konsolen visar "Goodbye World av Jay."
Slutsats
Utvecklare kan enkelt lägga till ny funktionalitet till en befintlig webbapplikation samtidigt som den håller den säker och isolerad från andra komponenter i huvudprogrammet genom att använda OSGi.
Vi har lärt oss om OSGi i det här inlägget, inklusive hur det fungerar, dess fördelar och ett enkelt program. Det är inte svårt att integrera OSGi i din egen applikation.
Lycklig kodning!
Kommentera uppropet