Vi jam havas vian programaron en la loko, sed vi ankoraŭ bezonas pli efikan metodon por ebligi viajn teknikajn uzantojn vastigi la platformon.
Kvankam OSGi estas konata al plej multaj Java-programistoj, integri ĝin en vian produkton povas ŝajni timiga tasko. La manko de klareco pri la preciza funkciado de OSGi plu konfuzigas la vojon antaŭen.
Kontraste al ĉio, kion ili ŝatus eksperimenti, OSGi sentas pli kiel provi veli la larĝan maron al multaj Java-programistoj.
Ĉi tiu artikolo prezentos vin al la printempa lernilo de OSGi Felix uzante simplan programon kaj trarigardos ĝiajn avantaĝojn kaj aliajn gravajn detalojn.
Do kio estas OSGi?
Krei kaj distribui modulojn kaj komponantojn ebligas la Java kadro konata kiel OSGi (Open Service Gateway Initiative).
Ĝi emfazas funkcion enkapsuligon kaj lozan kupladon, kiu ofertas plurajn avantaĝojn al programistoj, inkluzive de modula funkcieco, kiu estas facile transdonebla inter fontkodoj kaj testado, kiu ne bezonas senfinajn dependecojn.
Kiel funkcias OSGi?
Dinamika komponentsistemo por Java estas difinita per aro de specifoj nomitaj OSGi. Ĉi tiuj specifoj ebligas evoluan aliron, kie aplikaĵo estas konstruita el kelkaj partoj kaj poste enpakita en pakaĵojn.
Lokaj kaj ret-bazitaj servoj estas uzataj de ĉi tiuj komponantoj por komuniki. Fari la kernkodon de la programo tiel kompakta kiel farebla estas la celo. Alta kuplado inter ĉi tiu kodo kaj pluraj komponantoj eblas.
La recikleblaj konstruelementoj de la aplikaĵo nomiĝas komponentoj. Pensu pri funkcioj kiel aĉetĉaro por via retkomerca retejo aŭ salajro-aplikaĵo por via administradsistemo.
Komponantoj povas uzi OSGi por kaŝi siajn efektivigojn de aliaj komponentoj kaj nur provizi la necesajn datumojn al ili per servoj.
Ĉi tio malhelpas komponantojn neintence ŝanĝi datumojn al kiuj ili ne devus havi aliron kaj administras dependecojn.
Ĉiuj ligoj inter komponentoj en OSGi-aplikaĵo estas faritaj per servoj en ideala mondo. Java pako enhavas la API kiu estas specifita por servoj.
La kunlaboro inter servoprovizantoj kaj klientoj postulas la uzon de klasoj kaj/aŭ interfacoj, kiuj konsistigas la API.
Ĉiuj OSGi-komponentoj estas enpakitaj kune en pakaĵoj, ĉiu el kiuj inkluzivas la rimedojn, kiujn ili bezonas por funkcii. Pakoj estas sufiĉe klaraj pri tio, kion ili bezonas de la medio kaj kion ili kapablas.
profitoj
- OSGi-aplikoj havas aliron al eksteraj pakaĵdeponejoj.
- La kadro permesas serv-orientitan dezajnon sur la modulnivelo.
- Ĝi ebligas administri la versiojn kaj dependecojn de aplikaĵaj pakaĵoj krom normigi kaj faciligi la integriĝon de triaj bibliotekoj.
- Aplikoj estas pli adapteblaj al ŝanĝiĝantaj postuloj, pli porteblaj kaj pli rapide reinĝenieri.
- A TTT-aplikaĵo povas esti deplojita kiel grupo de versiitaj OSGi-faskoj kun dinamika vivdaŭro danke al la integriĝo de la kadro kun la Java EE-programa modelo.
- Anstataŭ esti instalita kiel triaparta biblioteko kiel parto de la aplikaĵo, la kadro disponigas la deklaran asembleon kaj flulinian unutestadon de la Printempa Kadro en normigita formo kiu estas disponigita kiel parto de la aplika servila rultempo.
- Por kompaniaj aplikoj konsistantaj el pluraj versiigitaj pakaĵoj kun dinamikaj vivocikloj, la kadro ofertas izolitecon.
- Ĝi enhavas integran pakdeponejon kiu povas stoki komunajn komunajn kaj versiigitajn pakaĵojn uzitajn de pluraj aplikoj, malhelpante ĉiun aplikaĵon deploji apartan kopion de ĉiu komuna biblioteko.
Komenci kun OSGi Felix printempo
Akiro de la Rimedoj
Elŝutante la plej freŝan version de Apache Karaf de ĉi tiu retejo, ni povas komenci nian OSGi-aventuron.
Surbaze de Apache Felix, la Apache-efektivigo de la OSGi-specifo, Apache Karaf disponigas platformon por OSGi-bazitaj aplikoj.
Karaf provizas diversajn helpemajn funkciojn aldone al Felix, kiuj helpos nin konatiĝi kun OSGi, kiel komandlinia interfaco, kiu ebligos nin komuniki kun la platformo.
Enira Punkto Por Pakoj
Apliko devas esti enpakita kiel OSGi-fasko antaŭ ol ĝi povas esti rulita en OSGi-medio. Aldone, la aplikaĵa enirpunkto devas esti precizigita; ĝi ne estas la norma publika senmova void ĉef(String[] args) funkcio.
Do ni komencu kreante "Saluton mondo” aplikaĵo bazita sur OSGi.
Ni komencas establante bazan OSGi API-dependecon:
La rultempo de OSGi havos aliron al la dependeco, tial la pakaĵo ne bezonas enhavi ĝin. Tial ĝi estas markita kiel provizita.
Nun ni kreu la simplan klason HelloWorld:
Klasoj kiuj funkcias kiel enirpunktoj por pakaĵoj devas efektivigi la OSGi-provizitan BundleActivator-interfacon.
Kiam la pakaĵo enhavanta ĉi tiun klason estas lanĉita, la OSGi-platformo vokas la funkcion start(). Aliflanke, baldaŭ antaŭ ol la pakaĵo estas haltita, la funkcio stop() estas vokita.
Ni ne forgesu, ke ĉiu pakaĵo povas havi nur unu BundleActivator. Ambaŭ manieroj povas komuniki kun la OSGi rultempo uzante la BundleContext objekto kiu estas donita.
Kreante Pakaĵon
Faru la pom.xml vera OSGi-pakaĵo farante la necesajn ŝanĝojn.
Ni devas unue esprimi klare, ke nia celo estas produkti pakaĵon.
Poste, ni uzas la maven-bundle-plugin por paki la HelloWorld-klason kiel OSGi-faskon, ĝentile de la Apache Felix-komunumo:
La valoroj de la kaplinioj de OSGi, kiujn ni deziras inkludi en la MANIFEST-dosiero de la pakaĵo, estas specifitaj en la sekcio de instrukcioj.
Bundle-Activator ja estas la taŭge kvalifikita nomo de la BundleActivator-solvo, kiu estos uzata por komenci kaj haltigi la pakaĵon. Ĝi kongruas kun la ĵus kreita klaso.
Kvankam ĝi ne estas OSGi-kapo, la Private-Package-kapo instrukcias la kromprogramon aldoni la pakaĵon al la pakaĵo sed simple ne fari ĝin alirebla al aliaj kromprogramoj. La komando mvn install devus esti uzata por krei la pakaĵon.
Instalado kaj Kurado de la Pakaĵo
Ni komencu Karaf rulante ĉi tiun komandon:
kie "KARAF HOME" rilatas al la dosierujo kie Karaf estis starigita. Ni povas uzi la jenan komandon por instali la pakaĵon kiam la konzolo Karaf aperas:
Uzante la lokan Maven-deponejon estas kiel Karaf estas dirita ŝargi la pakaĵon.
Resendante la numeran ID de la pakaĵo, Karaf skribas ĝin. Ĉi tiu identigilo povus malsami laŭ kiom da pakaĵoj antaŭe estis instalitaj. La pakaĵo nun estis sukcese instalita, kaj la komando por lanĉi ĝin estas jena:
En la momento, kiam vi lanĉas la pakaĵon, montriĝas "Hello World by Jay". Ni nun povas halti kaj forigi la pakaĵon uzante:
La konzolo montras "Adiaŭ Mondo de Jay."
konkludo
Programistoj povas facile aldoni novajn funkciojn al ekzistanta TTT-aplikaĵo tenante ĝin sekura kaj izolita de aliaj komponantoj de la ĉefa programo uzante OSGi.
Ni lernis pri OSGi en ĉi tiu afiŝo, inkluzive de kiel ĝi funkcias, ĝiaj avantaĝoj kaj simpla programo. Ne estas malfacile korpigi OSGi en vian propran aplikaĵon.
Feliĉan kodigon!
Lasi Respondon