Nailagay mo na ang iyong software, ngunit kailangan mo pa rin ng mas epektibong paraan ng pagpapagana ng iyong mga teknikal na user na palawakin ang platform.
Kahit na ang OSGi ay kilala sa karamihan ng mga developer ng Java, ang pagsasama nito sa iyong produkto ay maaaring mukhang isang nakakatakot na gawain. Ang kakulangan ng kalinawan tungkol sa tumpak na mga gawain ng OSGi ay lalong nagpapagulo sa daan.
Sa kaibahan sa anumang bagay na gusto nilang mag-eksperimento, mas nararamdaman ng OSGi ang pagtatangkang maglayag sa malawak na dagat patungo sa maraming developer ng Java.
Ipakikilala sa iyo ng artikulong ito ang tutorial sa tagsibol ng OSGi Felix gamit ang isang tuwirang programa at dumaan, ang mga pakinabang nito, at iba pang mahahalagang detalye.
Kaya ano ang OSGi?
Ang paglikha at pamamahagi ng mga module at bahagi ay ginawang posible ng Java framework na kilala bilang OSGi (Open Service Gateway Initiative).
Binibigyang-diin nito ang function encapsulation at loose coupling, na nag-aalok ng ilang mga pakinabang sa mga developer, kabilang ang modular functionality na madaling maililipat sa pagitan ng mga source code at pagsubok na hindi nangangailangan ng mga walang katapusang dependency.
Paano gumagana ang OSGi?
Ang isang dynamic na component system para sa Java ay tinukoy ng isang set ng mga pagtutukoy na tinatawag na OSGi. Ang mga spec na ito ay nagbibigay-daan sa isang diskarte sa pagbuo kung saan ang isang application ay binuo mula sa isang bilang ng mga bahagi at pagkatapos ay naka-package sa mga bundle.
Ang mga lokal at nakabatay sa network na serbisyo ay ginagamit ng mga bahaging ito upang makipag-usap. Ang layunin ay gawin ang pangunahing code ng programa bilang compact hangga't magagawa. Posible ang mataas na pagsasama sa pagitan ng code na ito at ilang bahagi.
Ang mga elemento ng gusali na magagamit muli ng application ay tinatawag na mga bahagi. Mag-isip tungkol sa mga feature tulad ng shopping cart para sa iyong e-commerce na website o isang payroll application para sa iyong sistema ng pamamahala ng kawani.
Ang mga bahagi ay maaaring gumamit ng OSGi upang itago ang kanilang mga pagpapatupad mula sa iba pang mga bahagi at magbigay lamang ng kinakailangang data sa kanila sa pamamagitan ng mga serbisyo.
Pinipigilan nito ang mga bahagi mula sa hindi sinasadyang pagbabago ng data na hindi nila dapat magkaroon ng access at pinamamahalaan ang mga dependency.
Lahat ng koneksyon sa pagitan ng mga bahagi sa isang OSGi application ay ginawa sa pamamagitan ng mga serbisyo sa isang perpektong mundo. Ang isang Java package ay naglalaman ng API na tinukoy para sa mga serbisyo.
Ang pakikipagtulungan sa pagitan ng mga service provider at customer ay nangangailangan ng paggamit ng mga klase at/o mga interface, na bumubuo sa API.
Ang lahat ng mga bahagi ng OSGi ay pinagsama-sama sa mga bundle, bawat isa ay kinabibilangan ng mga mapagkukunang kailangan nila upang gumana. Ang mga bundle ay medyo malinaw tungkol sa kung ano ang kailangan nila mula sa kapaligiran at kung ano ang kanilang kakayahan.
Mga Benepisyo
- Ang mga aplikasyon ng OSGi ay may access sa mga panlabas na imbakan ng bundle.
- Ang balangkas ay nagbibigay-daan sa disenyong nakatuon sa serbisyo sa antas ng module.
- Ginagawa nitong posible na pamahalaan ang mga bersyon at dependency ng mga bundle ng application bilang karagdagan sa pag-standardize at pagpapadali sa pagsasama ng mga third-party na aklatan.
- Ang mga application ay mas madaling ibagay sa pagbabago ng mga pangangailangan, mas portable, at mas mabilis na i-reengineer.
- A web application maaaring i-deploy bilang isang pangkat ng mga naka-bersyon na OSGi bundle na may dynamic na panghabambuhay salamat sa pagsasama ng framework sa modelo ng Java EE programming.
- Sa halip na i-install bilang isang third-party na library bilang bahagi ng application, ang framework ay nagbibigay ng declarative assembly at streamlined unit testing ng Spring Framework sa isang standardized na form na ibinibigay bilang bahagi ng application server runtime.
- Para sa mga corporate application na binubuo ng ilang naka-bersyon na bundle na may mga dynamic na lifecycle, nag-aalok ang framework ng paghihiwalay.
- Naglalaman ito ng pinagsama-samang imbakan ng bundle na maaaring mag-imbak ng mga nakabahaging karaniwan at may bersyon na mga bundle na ginagamit ng ilang application, na pumipigil sa bawat application na mag-deploy ng hiwalay na kopya ng bawat nakabahaging library.
Pagsisimula sa OSGi Felix spring
Pagkuha ng Mga Mapagkukunan
Sa pamamagitan ng pag-download ng pinakabagong bersyon ng Apache Karaf mula sa ang site na ito, maaari na nating simulan ang ating OSGi adventure.
Batay sa Apache Felix, ang pagpapatupad ng Apache ng ispesipikasyon ng OSGi, ang Apache Karaf ay nagbibigay ng isang platform para sa mga application na nakabatay sa OSGi.
Nagbibigay ang Karaf ng iba't ibang mga kapaki-pakinabang na tampok sa ibabaw ng Felix na tutulong sa amin na maging pamilyar sa OSGi, tulad ng interface ng command line na magbibigay-daan sa amin na makipag-usap sa platform.
Entry Point Para sa Mga Bundle
Ang isang application ay dapat na naka-package bilang isang OSGi bundle bago ito mapatakbo sa isang OSGi environment. Bukod pa rito, dapat na tukuyin ang entry point ng aplikasyon; ito ay hindi ang karaniwang pampublikong static void main(String[] args) function.
Kaya magsimula tayo sa paglikha ng isang “Kamusta Mundo” application batay sa OSGi.
Nagsisimula kami sa pamamagitan ng pagtatatag ng pangunahing OSGi API dependency:
Ang OSGi runtime ay magkakaroon ng access sa dependency, samakatuwid ang bundle ay hindi kailangang maglaman nito. Samakatuwid, ito ay minarkahan bilang ibinigay.
Ngayon, gumawa tayo ng diretsong klase ng HelloWorld:
Ang mga klase na nagsisilbing entry point para sa mga bundle ay dapat magpatupad ng OSGi-provided BundleActivator interface.
Kapag ang bundle na naglalaman ng klase na ito ay inilunsad, ang OSGi platform ay tinatawag na start() function. Sa kabilang panig, ilang sandali bago ihinto ang bundle, ang function stop() ay tinatawag.
Huwag nating kalimutan na ang bawat bundle ay maaari lamang magkaroon ng isang BundleActivator. Ang parehong paraan ay maaaring makipag-ugnayan sa OSGi runtime gamit ang bagay na BundleContext na ibinigay.
Paggawa ng Bundle
Gawing totoong OSGi bundle ang pom.xml sa pamamagitan ng paggawa ng mga kinakailangang pagbabago.
Dapat muna nating ipahayag nang malinaw na ang ating layunin ay gumawa ng isang bundle.
Pagkatapos, ginagamit namin ang maven-bundle-plugin para i-package ang HelloWorld class bilang OSGi bundle, sa kagandahang-loob ng komunidad ng Apache Felix:
Ang mga halaga ng mga header ng OSGi na gusto naming isama sa MANIFEST file ng bundle ay tinukoy sa seksyon ng mga tagubilin.
Ang Bundle-Activator ay talagang kwalipikadong pangalan ng solusyon sa BundleActivator na gagamitin upang simulan at ihinto ang bundle. Ito ay katugma sa kakagawa lang na klase.
Bagama't hindi ito isang OSGi header, ang Private-Package header ay nagtuturo sa plugin na idagdag ang package sa bundle ngunit hindi lang ito gagawing accessible sa ibang mga plugin. Ang mvn install command ay dapat gamitin upang lumikha ng bundle.
Pag-install at Pagpapatakbo ng Bundle
Simulan natin ang Karaf sa pamamagitan ng pagpapatakbo ng utos na ito:
kung saan ang "KARAF HOME" ay tumutukoy sa folder kung saan naka-set up ang Karaf. Maaari naming gamitin ang sumusunod na command upang i-install ang bundle kapag lumitaw ang prompt ng Karaf console:
Ang paggamit ng lokal na repositoryo ng Maven ay kung paano sinabihan si Karaf na i-load ang bundle.
Ibinalik ang numeric ID ng bundle, isinulat ito ni Karaf. Maaaring mag-iba ang ID na ito depende sa kung ilang bundle ang naunang na-install. Ang bundle ay matagumpay na ngayong na-install, at ang utos para ilunsad ito ay ang mga sumusunod:
Sa sandaling ilunsad mo ang package, lalabas ang "Hello World ni Jay." Maaari na nating ihinto at alisin ang bundle gamit ang:
Ang console ay nagpapakita ng "Goodbye World ni Jay."
Konklusyon
Ang mga developer ay madaling magdagdag ng bagong functionality sa isang umiiral na web application habang pinapanatili itong secure at nakahiwalay sa iba pang bahagi ng pangunahing program sa pamamagitan ng paggamit ng OSGi.
Nalaman namin ang tungkol sa OSGi sa post na ito, kabilang ang kung paano ito gumagana, ang mga pakinabang nito, at isang direktang programa. Hindi mahirap isama ang OSGi sa iyong sariling aplikasyon.
Maligayang coding!
Mag-iwan ng Sagot