Programavimas

Sveiki, OSGi, 1 dalis: Paketai pradedantiesiems

„Open Services Gateway Initiative“ (OSGi) apibrėžia architektūrą, skirtą modulinėms programoms ir bibliotekoms kurti ir diegti. Šiame pirmajame trijų dalių „OSGi“ įžangos straipsnyje „Sunil Patil“ pradeda naudotis OSGi kūrimo koncepcijomis ir parodo, kaip sukurti paprastą „Hello World“ programą naudojant „Eclipse OSGi“ konteinerių diegimo programą „Equinox“. Jis taip pat trumpai aptaria į paslaugas orientuotų programų kūrimą naudojant OSGi ir pristato OSGi „ServiceFactory“ ir „ServiceTracker“ klasės.

„Open Services Gateway Initiative“ (OSGi), dar vadinama „Java“ dinaminių modulių sistema, apibrėžia modulinių programų kūrimo architektūrą. „OSGi“ konteinerių diegimas, pvz., „Knopflerfish“, „Equinox“ ir „Apache Felix“, leidžia suskaidyti programą į kelis modulius ir taip lengviau valdyti kryžmines priklausomybes tarp jų.

„OSGi“, „Equinox“ ir „Project Jigsaw“

Susipažinkite su realaus pasaulio vaizdais, studijuodami OSGi / Equinox integracijos metu išmoktas pamokas didžiausiame JK mokslo projekte, tada sužinokite, ko galite tikėtis iš „Java Jigsaw Project Jigsaw“.

Panašiai kaip „Java Servlet“ ir EJB specifikacijose, OSGi specifikacijoje apibrėžiami du dalykai: paslaugų rinkinys, kurį turi įdiegti OSGi konteineris, ir sutartis tarp konteinerio ir jūsų programos. Kūrimas OSGi platformoje reiškia, kad pirmiausia turite sukurti savo programą naudodami OSGi API, tada įdėti ją į OSGi konteinerį. Kūrėjo požiūriu, OSGi siūlo šiuos privalumus:

  • Galite dinamiškai įdiegti, pašalinti, paleisti ir sustabdyti skirtingus programos modulius nepaleidę talpyklos.
  • Programoje vienu metu gali veikti daugiau nei viena konkretaus modulio versija.
  • „OSGi“ teikia labai gerą infrastruktūrą kuriant į paslaugas orientuotas programas, taip pat įterptąsias, mobiliąsias ir turtingas interneto programas.

Atsižvelgiant į tai, kad naudojate servletų konteinerius kurdami žiniatinklio programas, ir EJB konteinerius, skirtus operacinėms programoms kurti, galite susimąstyti, kodėl jums reikia dar vieno tipo konteinerių. Trumpas atsakymas yra tas, kad OSGi konteineriai skirti specialiai kurti sudėtingas „Java“ programas, kurias norite suskaidyti į modulius. Išplėsiu trumpą atsakymą šioje serijoje.

Sveiki, OSGi: Perskaitykite seriją

  • 1 dalis: ryšuliai pradedantiesiems
  • 2 dalis. Pristatome dinaminius spyruoklinius modulius
  • 3 dalis: nuneškite į serverio pusę

OSGi įmonių programose

Darbą su OSGi specifikacija pradėjo OSGi aljansas 1999 m. Kovo mėn. Pagrindinis jo tikslas buvo sukurti atvirą valdomų paslaugų teikimo vietiniams tinklams ir įrenginiams specifikaciją. Pagrindinė idėja yra ta, kad pridėję OSGi paslaugų platformą prie tinklo įrenginio (įdėto ir serverio), turėtumėte sugebėti valdyti to įrenginio programinės įrangos komponentų gyvavimo ciklą iš bet kurios tinklo vietos. Programinės įrangos komponentus galima įdiegti, atnaujinti ar pašalinti betarpiškai, netrukdant įrenginio veikimui.

Daugelį metų OSGi technologija klestėjo įterptųjų sistemų ir tinklo įrenginių rinkoje. Iš dalies „Eclipse“ dėka, OSGi tampa perspektyvia ir vertinga technologija įmonės plėtrai.

Didėjanti parama OSGi

2003 m. „Eclipse“ kūrėjų komanda pradėjo ieškoti būdų, kaip padaryti „Eclipse“ dinamiškesnę ir turtingesnę klientų platformą bei padidinti įrankių rinkinio moduliškumą. Galiausiai komanda apsisprendė naudoti OSGi sistemą kaip vykdymo laiko komponento modelį. „Eclipse 3.0“, išleista 2004 m. Birželio mėn., Buvo pirmoji „Eclipse“ versija, pagrįsta OSGi.

Beveik visi įmonės programų serveriai palaiko arba planuoja palaikyti OSGi. „Spring“ sistema taip pat palaiko „OSGi“ per „OSGi Service Platforms“ projekto „Spring Dynamic Modules“, kuris suteikia infrastruktūros sluoksnį, palengvinantį OSGi naudojimą kuriant „Java“ įmonės programas pavasarį.

Atvirojo kodo OSGi konteineriai

Įmonės kūrėjo požiūriu, OSGi konteinerio pėdsakas yra toks mažas, kad galite lengvai jį įterpti į įmonės programą. Pavyzdžiui, tarkime, kad kuriate sudėtingą žiniatinklio programą. Norite suskaidyti programą į kelis modulius: vieną rodinio sluoksnio modulį, kitą DAO sluoksnio modulį ir trečiąjį duomenų prieigos sluoksnio modulį. Naudodami įterptąjį OSGi konteinerį valdydami šių modulių kryžmines priklausomybes, galėsite atnaujinti DAO sluoksnį (tarkim, nuo lėtojo DAO iki greito DAO) nepaleidę programos iš naujo.

Jei jūsų programa atitinka OSGi specifikaciją, ji turėtų galėti veikti bet kuriame su OSGi suderinamame konteineryje. Šiuo metu yra trys populiarūs atvirojo kodo OSGi konteineriai:

  • „Equinox“ yra „OSGi“ paslaugų platformos 4 leidimo pagrindinės dalies pamatinis diegimas. Tai yra modulinė „Java“ vykdymo trukmė, esanti „Eclipse IDE“ centre, ir įgyvendina visas privalomas ir daugumą papildomų OSGi R4 specifikacijos funkcijų.
  • „Knopflerfish“ yra atviro kodo OSGi R3 ir OSGi R4 specifikacijų diegimas. „Knopflerfish 2“ įgyvendina visas privalomas funkcijas ir kai kurias neprivalomas funkcijas, apibrėžtas R4 specifikacijoje.
  • „Apache Felix“ yra atvirojo kodo „OSGi“ talpykla iš „Apache Software Foundation“. Rašymo metu ši talpykla ne visiškai atitinka OSGI R4 specifikaciją.

Šiame straipsnyje mes naudosime „Equinox“ kaip savo OSGi konteinerį. Daugiau informacijos apie „Apache Felix“ ir „Knopflerfish“ rasite skyriuje „Ištekliai“.