Programmering

Hei, OSGi, del 1: pakker for nybegynnere

Open Services Gateway Initiative (OSGi) definerer en arkitektur for utvikling og distribusjon av modulære applikasjoner og biblioteker. I denne første artikkelen i en tredelt introduksjon til OSGi, kommer Sunil Patil i gang med OSGi-utviklingskonsepter og viser deg hvordan du bygger en enkel Hello World-applikasjon ved hjelp av Eclipse OSGi containerimplementering, Equinox. Han berører også kort å bygge serviceorienterte applikasjoner ved hjelp av OSGi og introduserer OSGi ServiceFactory og ServiceTracker klasser.

Open Services Gateway Initiative (OSGi), også kjent som Dynamic Module System for Java, definerer en arkitektur for modulær applikasjonsutvikling. OSGi containerimplementeringer som Knopflerfish, Equinox og Apache Felix lar deg dele applikasjonen din i flere moduler og dermed lettere administrere kryssavhengigheter mellom dem.

OSGi, Equinox og Project Jigsaw

Få et virkelighetsbilde ved å studere leksjoner lært under en OSGi / Equinox-integrasjon ved Storbritannias største vitenskapsprosjekt, og finn deretter ut hva du kan forvente deg fra Project Jigsaw i Java 9.

I likhet med Java Servlet og EJB-spesifikasjonene definerer OSGi-spesifikasjonen to ting: et sett med tjenester som en OSGi-container må implementere og en kontrakt mellom containeren og applikasjonen din. Å utvikle seg på OSGi-plattformen betyr at du først bygger applikasjonen din ved hjelp av OSGi APIer, og deretter distribuerer den i en OSGi-container. Fra et utviklerperspektiv tilbyr OSGi følgende fordeler:

  • Du kan installere, avinstallere, starte og stoppe forskjellige moduler i applikasjonen din dynamisk uten å starte beholderen på nytt.
  • Søknaden din kan ha mer enn én versjon av en bestemt modul som kjører samtidig.
  • OSGi gir veldig god infrastruktur for utvikling av serviceorienterte applikasjoner, samt innebygde, mobile og rike internettapper.

Gitt at du bruker servletcontainere for å bygge webapplikasjoner og EJB-containere for å bygge transaksjonsapplikasjoner, kan du lure på hvorfor du trenger enda en type container. Det korte svaret er at OSGi-containere er ment spesielt for utvikling av komplekse Java-applikasjoner som du vil dele opp i moduler. Jeg vil utvide det korte svaret gjennom hele denne serien.

Hei, OSGi: Les serien

  • Del 1: Bunter for nybegynnere
  • Del 2: Introduksjon av vårdynamiske moduler
  • Del 3: Ta den til serversiden

OSGi i bedriftsapplikasjoner

Arbeidet med OSGi-spesifikasjonen ble startet av OSGi Alliance i mars 1999. Hovedmålet var å lage en åpen spesifikasjon for levering av administrerte tjenester til lokale nettverk og enheter. Den grunnleggende ideen er at når du først har lagt til en OSGi-tjenesteplattform i en nettverksenhet (innebygde så vel som servere), skal du kunne administrere livssyklusen til programvarekomponenter i enheten fra hvor som helst i nettverket. Programvarekomponenter kan installeres, oppdateres eller fjernes uten å måtte forstyrre driften av enheten.

I mange år har OSGi-teknologi blomstret i markedet for innebygde systemer og nettverksenheter. Nå, delvis takket være Eclipse, fremstår OSGi som en levedyktig og verdifull teknologi for bedriftsutvikling.

Voksende støtte for OSGi

I 2003 begynte Eclipse-utviklingsteamet å lete etter måter å gjøre Eclipse til en mer dynamisk rik klientplattform og øke verktøysettets modularitet. Til slutt bestemte teamet seg for å bruke OSGi-rammeverket som en kjøretidsmodell. Eclipse 3.0, utgitt i juni 2004, var den første versjonen av Eclipse basert på OSGi.

Nesten alle bedriftsapplikasjonsservere støtter eller planlegger å støtte OSGi. Spring-rammeverket støtter også OSGi via Spring Dynamic Modules for OSGi Service Platforms-prosjektet, som gir et infrastrukturlag som gjør det enklere å bruke OSGi i vårbasert Java-applikasjonsutvikling.

Åpen kildekode OSGi-containere

Fra en bedriftsutvikler synspunkt har OSGi-containeren så lavt fotavtrykk at du enkelt kan legge den inn i en bedriftsapplikasjon. La oss for eksempel si at du utvikler en kompleks webapplikasjon. Du vil dele applikasjonen i flere moduler: en modul for visningslaget, en annen for DAO-laget og en tredje modul for datatilgangslaget. Ved å bruke en innebygd OSGi-beholder for å administrere kryssavhengighetene til disse modulene, kan du oppdatere DAO-laget ditt (si fra langsom DAO til rask DAO) uten å starte applikasjonen på nytt.

Så lenge applikasjonen din er i samsvar med OSGi-spesifikasjonen, skal den kunne kjøres i en hvilken som helst OSGi-kompatibel container. For tiden er det tre populære open source OSGi-containere:

  • Jevndøgn er referanseimplementeringen for rammedelen av OSGi Service Platform Release 4. Det er den modulære Java-kjøretiden i hjertet av Eclipse IDE, og implementerer alle de obligatoriske og de fleste valgfrie funksjonene i OSGi R4-spesifikasjonen.
  • Knopflerfish er en åpen kildekodeimplementering av OSGi R3 og OSGi R4 spesifikasjonene. Knopflerfish 2 implementerer alle obligatoriske funksjoner og noen av de valgfrie funksjonene som er definert i R4-spesifikasjonen.
  • Apache Felix er OSGi-container med åpen kildekode fra Apache Software Foundation. I skrivende stund er denne beholderen ikke i samsvar med OSGI R4-spesifikasjonen.

I denne artikkelen vil vi bruke Equinox som OSGi-container. Se ressursdelen for mer informasjon om Apache Felix og Knopflerfish.

$config[zx-auto] not found$config[zx-overlay] not found