Jūs jau turite savo programinę įrangą, bet jums vis tiek reikia veiksmingesnio metodo, leidžiančio techniniams vartotojams išplėsti platformą.
Nors OSGi yra gerai žinoma daugumai „Java“ kūrėjų, jos integravimas į produktą gali atrodyti nelengvas uždavinys. Aiškumo trūkumas dėl tikslaus OSGi veikimo dar labiau trikdo kelią į priekį.
Priešingai nei bet kas, su kuo jie norėtų eksperimentuoti, OSGi daugeliui „Java“ kūrėjų jaučiasi kaip bandymas plaukti plačia jūra.
Šis straipsnis supažindins jus su OSGi Felix pavasario mokymo programa naudojant paprastą programą, jos pranašumus ir kitą svarbią informaciją.
Taigi, kas yra OSGi?
Modulių ir komponentų kūrimas ir platinimas yra įmanomas naudojant Java sistemą, žinomą kaip OSGi (Open Service Gateway Initiative).
Jame pabrėžiamas funkcijų inkapsuliavimas ir laisvas sujungimas, o tai suteikia keletą pranašumų kūrėjams, įskaitant modulines funkcijas, kurias galima lengvai perkelti iš vieno šaltinio kodo į kitą, ir testavimą, kuriam nereikia nesibaigiančių priklausomybių.
Kaip veikia OSGi?
Dinaminė Java komponentų sistema yra apibrėžta specifikacijų rinkiniu, vadinamu OSGi. Šios specifikacijos leidžia kurti kūrimo metodą, kai programa kuriama iš kelių dalių ir supakuojama į paketus.
Šie komponentai bendravimui naudoja vietines ir tinklo paslaugas. Siekiama, kad pagrindinis programos kodas būtų kuo kompaktiškesnis. Galimas didelis šio kodo ir kelių komponentų ryšys.
Programos daugkartiniai pastato elementai vadinami komponentais. Pagalvokite apie tokias funkcijas kaip elektroninės prekybos svetainės pirkinių krepšelis arba personalo valdymo sistemos darbo užmokesčio apskaičiavimo programa.
Komponentai gali naudoti OSGi, norėdami paslėpti savo įgyvendinimus nuo kitų komponentų ir teikti jiems reikiamus duomenis tik per paslaugas.
Tai neleidžia komponentams netyčia pakeisti duomenų, prie kurių jie neturėtų turėti prieigos, ir valdo priklausomybes.
Visi ryšiai tarp komponentų OSGi programoje atliekami naudojant paslaugas idealiame pasaulyje. „Java“ pakete yra API, kuri nurodyta paslaugoms.
Bendradarbiaujant paslaugų teikėjams ir klientams reikia naudoti klases ir (arba) sąsajas, kurios sudaro API.
Visi OSGi komponentai yra supakuoti į paketus, kurių kiekvienas apima išteklius, kurių jiems reikia norint veikti. Paketai gana aiškiai nurodo, ko jiems reikia iš aplinkos ir ką jie gali.
Privalumai
- OSGi programos turi prieigą prie išorinių paketų saugyklų.
- Sistema leidžia į paslaugas orientuotą projektavimą modulio lygiu.
- Tai leidžia valdyti programų paketų versijas ir priklausomybes, be standartizacijos ir palengvinti trečiųjų šalių bibliotekų integravimą.
- Programos yra labiau pritaikomos prie kintančių poreikių, lengviau nešiojamos ir greičiau perkuriamos.
- A interneto programa Dėl sistemos integracijos su „Java EE“ programavimo modeliu gali būti įdiegta kaip OSGi paketų su versijomis grupė, kurios eksploatavimo laikas yra dinamiškas.
- Užuot įdiegta kaip trečiosios šalies biblioteka kaip programos dalis, sistema suteikia deklaratyvų surinkimą ir supaprastintą „Spring Framework“ vienetų testavimą standartizuota forma, kuri pateikiama kaip programos serverio vykdymo laiko dalis.
- Korporacinėms programoms, sudarytoms iš kelių versijų paketų su dinamine gyvavimo ciklais, sistema siūlo izoliaciją.
- Jame yra integruota paketų saugykla, kurioje galima saugoti bendrinamus bendrus ir versijų paketus, kuriuos naudoja kelios programos, neleidžiant kiekvienai programai įdiegti atskiros kiekvienos bendrinamos bibliotekos kopijos.
Darbo su OSGi Felix pavasario pradžia
Išteklių gavimas
Atsisiųsdami naujausią „Apache Karaf“ versiją iš ši svetainė, galime pradėti savo OSGi nuotykius.
Remiantis Apache Felix, OSGi specifikacijos Apache įgyvendinimu, Apache Karaf suteikia platformą OSGi pagrįstoms programoms.
„Karaf“ suteikia įvairių naudingų „Felix“ funkcijų, kurios padės mums susipažinti su OSGi, pavyzdžiui, komandų eilutės sąsają, kuri leis mums bendrauti su platforma.
Įėjimo taškas paketams
Programa turi būti supakuota kaip OSGi paketas, kad ją būtų galima paleisti OSGi aplinkoje. Be to, turi būti nurodytas paraiškos įvedimo taškas; tai nėra standartinė viešoji statinė void main(String[] args) funkcija.
Taigi pradėkime kurdami „Sveikas pasaulis“ programa, pagrįsta OSGi.
Pradedame nustatydami pagrindinę OSGi API priklausomybę:
OSGi vykdymo laikas turės prieigą prie priklausomybės, todėl pakete jos nereikia. Todėl jis pažymėtas kaip tiekiamas.
Dabar sukurkime paprastą HelloWorld klasę:
Klasės, kurios veikia kaip paketų įėjimo taškai, turi įdiegti OSGi teikiamą BundleActivator sąsają.
Kai paleidžiamas paketas, kuriame yra ši klasė, OSGi platforma iškviečia start() funkciją. Kitoje pusėje, prieš pat sustabdant paketą, iškviečiama funkcija stop().
Nepamirškime, kad kiekvienas paketas gali turėti tik vieną BundleActivator. Abu būdai gali susisiekti su OSGi vykdymo laiku naudojant pateiktą BundleContext objektą.
Paketo kūrimas
Padarykite pom.xml tikru OSGi rinkiniu atlikdami reikiamus pakeitimus.
Pirmiausia turime aiškiai išreikšti, kad mūsų tikslas yra sukurti paketą.
Tada mes naudojame „maven-bundle-plugin“, kad „HelloWorld“ klasę supakuotų kaip OSGi paketą, „Apache Felix“ bendruomenės sutikimu:
OSGi antraščių reikšmės, kurias norime įtraukti į paketo MANIFEST failą, nurodytos instrukcijų skyriuje.
Bundle-Activator iš tikrųjų yra tinkamai apibrėžtas BundleActivator sprendimo, kuris bus naudojamas paketui paleisti ir sustabdyti, pavadinimas. Tai suderinama su ką tik sukurta klase.
Nors tai nėra OSGi antraštė, „Private-Package“ antraštė nurodo įskiepiui pridėti paketą prie paketo, bet tiesiog nepadaryti jo pasiekiamo kitiems papildiniams. Norint sukurti paketą, reikia naudoti komandą mvn install.
Paketo diegimas ir paleidimas
Pradėkime Karaf vykdydami šią komandą:
kur „KARAF HOME“ reiškia aplanką, kuriame buvo nustatytas Karafas. Galime naudoti šią komandą, norėdami įdiegti paketą, kai pasirodys „Karaf“ konsolės raginimas:
Naudojant vietinę Maven saugyklą Karafui liepiama įkelti paketą.
Grąžinęs paketo skaitmeninį ID, Karafas jį išrašo. Šis ID gali skirtis priklausomai nuo to, kiek paketų anksčiau buvo įdiegta. Dabar rinkinys sėkmingai įdiegtas, o jo paleidimo komanda yra tokia:
Kai paleidžiate paketą, rodomas „Hello World by Jay“. Dabar galime sustabdyti ir pašalinti paketą naudodami:
Konsolėje rodoma „Goodbye World by Jay“.
Išvada
Naudodami OSGi, kūrėjai gali lengvai pridėti naujų funkcijų prie esamos žiniatinklio programos, išlaikant ją saugią ir atskirtą nuo kitų pagrindinės programos komponentų.
Šiame įraše sužinojome apie OSGi, įskaitant jo veikimą, pranašumus ir paprastą programą. Nesunku įtraukti OSGi į savo programą.
Laimingo kodavimo!
Palikti atsakymą