Innholdsfortegnelse[Gjemme seg][Forestilling]
Du har allerede programvaren på plass, men du trenger fortsatt en mer effektiv metode for å gjøre det mulig for dine tekniske brukere å utvide plattformen.
Selv om OSGi er velkjent for de fleste Java-utviklere, kan det virke som en skremmende oppgave å integrere det i produktet ditt. Mangelen på klarhet om OSGis presise funksjoner forvirrer veien videre.
I motsetning til alt de ønsker å eksperimentere med, føles OSGi mer som å prøve å seile det store havet til mange Java-utviklere.
Denne artikkelen vil introdusere deg til OSGi Felix våropplæring ved å bruke et enkelt program og gå gjennom fordelene og andre viktige detaljer.
Så hva er OSGi?
Oppretting og distribusjon av moduler og komponenter er muliggjort av Java-rammeverket kjent som OSGi (Open Service Gateway Initiative).
Den legger vekt på funksjonsinnkapsling og løs kobling, noe som gir utviklere flere fordeler, inkludert modulær funksjonalitet som lett kan overføres mellom kildekoder og testing som ikke trenger uendelige avhengigheter.
Hvordan fungerer OSGi?
Et dynamisk komponentsystem for Java er definert av et sett med spesifikasjoner kalt OSGi. Disse spesifikasjonene muliggjør en utviklingstilnærming der en applikasjon bygges fra en rekke deler og deretter pakkes inn i pakker.
Lokale og nettverksbaserte tjenester brukes av disse komponentene til å kommunisere. Målet er å gjøre programmets kjernekode så kompakt som mulig. Høy kobling mellom denne koden og flere komponenter er mulig.
Applikasjonens gjenbrukbare bygningselementer kalles komponenter. Tenk på funksjoner som en handlekurv for e-handelsnettstedet ditt eller en lønnsapplikasjon for personalstyringssystemet.
Komponenter kan bruke OSGi til å skjule sine implementeringer fra andre komponenter og bare gi de nødvendige dataene til dem via tjenester.
Dette forhindrer at komponenter utilsiktet endrer data de ikke skal ha tilgang til og administrerer avhengigheter.
Alle koblinger mellom komponenter i en OSGi-applikasjon lages gjennom tjenester i en ideell verden. En Java-pakke inneholder API-en som er spesifisert for tjenester.
Samarbeidet mellom tjenesteleverandører og kunder krever bruk av klasser og/eller grensesnitt, som utgjør API.
Alle OSGi-komponentene er pakket sammen i bunter, som hver inkluderer ressursene de trenger for å fungere. Bunter er ganske tydelige på hva de trenger fra miljøet og hva de er i stand til.
Fordeler
- OSGi-applikasjoner har tilgang til eksterne pakkelager.
- Rammeverket tillater tjenesteorientert design på modulnivå.
- Det gjør det mulig å administrere versjonene og avhengighetene til applikasjonspakker i tillegg til å standardisere og gjøre det enklere å integrere tredjepartsbiblioteker.
- Applikasjoner er mer tilpasningsdyktige til endrede krav, mer bærbare og raskere å omkonstruere.
- A webapplikasjon kan distribueres som en gruppe versjonerte OSGi-bunter med en dynamisk levetid takket være rammeverkets integrasjon med Java EE-programmeringsmodellen.
- I stedet for å bli installert som et tredjepartsbibliotek som en del av applikasjonen, gir rammeverket den deklarative sammenstillingen og strømlinjeformet enhetstesting av Spring Framework i en standardisert form som leveres som en del av applikasjonstjenerens kjøretid.
- For bedriftsapplikasjoner som består av flere versjonerte pakker med dynamiske livssykluser, tilbyr rammeverket isolasjon.
- Den inneholder et integrert buntlager som kan lagre delte vanlige og versjonerte bunter som brukes av flere applikasjoner, og forhindrer at hver applikasjon distribuerer en separat kopi av hvert delte bibliotek.
Komme i gang med OSGi Felix spring
Få ressursene
Ved å laste ned Apache Karafs nyeste versjon fra dette nettstedet, kan vi begynne vårt OSGi-eventyr.
Basert på Apache Felix, Apache-implementeringen av OSGi-spesifikasjonen, tilbyr Apache Karaf en plattform for OSGi-baserte applikasjoner.
Karaf tilbyr ulike nyttige funksjoner på toppen av Felix som vil hjelpe oss med å bli kjent med OSGi, for eksempel et kommandolinjegrensesnitt som gjør oss i stand til å kommunisere med plattformen.
Inngangspunkt for pakker
En applikasjon må pakkes som en OSGi-pakke før den kan kjøres i et OSGi-miljø. I tillegg må applikasjonens inngangspunkt spesifiseres; det er ikke standard public static void main(String[] args) funksjon.
Så la oss begynne med å lage en "Hallo verden”-applikasjon basert på OSGi.
Vi begynner med å etablere en grunnleggende OSGi API-avhengighet:
OSGi-kjøretiden vil ha tilgang til avhengigheten, derfor trenger ikke pakken å inneholde den. Derfor er den merket som levert.
La oss nå lage den enkle HelloWorld-klassen:
Klasser som fungerer som inngangspunkter for bunter, må implementere det OSGi-leverte BundleActivator-grensesnittet.
Når pakken som inneholder denne klassen er lansert, kaller OSGi-plattformen start()-funksjonen. På den andre siden, kort før bunten stoppes, kalles funksjonen stop().
La oss ikke glemme at hver bunt bare kan ha én BundleActivator. Begge måter kan kommunisere med OSGi-kjøretiden ved å bruke BundleContext-objektet som er gitt.
Opprette en pakke
Gjør pom.xml til en ekte OSGi-pakke ved å gjøre de nødvendige endringene.
Vi må først uttrykke klart at målet vårt er å produsere en bunt.
Deretter bruker vi maven-bundle-plugin til å pakke HelloWorld-klassen som en OSGi-pakke, med tillatelse fra Apache Felix-fellesskapet:
Verdiene til OSGi-hodene vi ønsker å inkludere i buntens MANIFEST-fil er spesifisert i instruksjonsdelen.
Bundle-Activator er faktisk det riktig kvalifiserte navnet på BundleActivator-løsningen som vil bli brukt for å starte og stoppe pakken. Den er kompatibel med den nettopp opprettede klassen.
Selv om det ikke er en OSGi-header, instruerer Private-Package-headeren plugin-en om å legge til pakken i pakken, men bare ikke gjøre den tilgjengelig for andre plugins. Kommandoen mvn install skal brukes til å lage pakken.
Installere og kjøre pakken
La oss begynne Karaf ved å kjøre denne kommandoen:
der "KARAF HOME" refererer til mappen der Karaf ble satt opp. Vi kan bruke følgende kommando for å installere pakken når Karaf-konsollens ledetekst vises:
Å bruke det lokale Maven-depotet er hvordan Karaf får beskjed om å laste inn pakken.
Ved å returnere pakkens numeriske ID, skriver Karaf det ut. Denne ID-en kan variere avhengig av hvor mange pakker som tidligere er installert. Bunten er nå installert, og kommandoen for å starte den er som følger:
I det øyeblikket du starter pakken, vises "Hello World by Jay". Vi kan nå stoppe og fjerne pakken ved å bruke:
Konsollen viser «Goodbye World by Jay».
konklusjonen
Utviklere kan enkelt legge til ny funksjonalitet til en eksisterende nettapplikasjon mens de holder den sikker og isolert fra andre komponenter i hovedprogrammet ved å bruke OSGi.
Vi har lært om OSGi i dette innlegget, inkludert hvordan det fungerer, dets fordeler og et enkelt program. Det er ikke vanskelig å inkorporere OSGi i din egen applikasjon.
God koding!
Legg igjen en kommentar