Koj twb muaj koj cov software nyob rau hauv qhov chaw, tab sis koj tseem xav tau ib txoj hauv kev zoo dua los ua kom koj cov neeg siv khoom nthuav dav lub platform.
Txawm hais tias OSGi paub zoo rau feem ntau Java developers, integrating nws rau hauv koj cov khoom yuav zoo li ib tug daunting hauj lwm. Qhov tsis meej pem txog OSGi cov kev ua haujlwm meej ntxiv ua rau txoj kev mus rau pem hauv ntej.
Hauv kev sib piv rau txhua yam uas lawv xav sim nrog, OSGi xav tias zoo li sim caij nkoj lub hiav txwv dav rau ntau tus neeg tsim tawm Java.
Kab lus no yuav qhia koj txog OSGi Felix caij nplooj ntoos hlav nyeem siv cov kev qhia ncaj nraim thiab mus dhau, nws qhov zoo, thiab lwm yam ntsiab lus tseem ceeb.
Yog li OSGi yog dab tsi?
Tsim thiab faib cov qauv thiab cov khoom siv tau ua tau los ntawm Java lub hauv paus hu ua OSGi (Open Service Gateway Initiative).
Nws hais txog kev ua haujlwm encapsulation thiab xoob coupling, uas muaj ntau qhov zoo rau cov neeg tsim khoom, suav nrog kev ua haujlwm modular uas nkag tau yooj yim ntawm cov lej thiab kev sim uas tsis tas yuav muaj kev vam meej.
OSGi ua haujlwm li cas?
Lub dynamic tivthaiv system rau Java yog txhais los ntawm cov txheej txheem tshwj xeeb hu ua OSGi. Cov specs no ua rau muaj kev txhim kho txoj hauv kev uas daim ntawv thov raug tsim los ntawm ntau qhov chaw thiab tom qab ntawd ntim rau hauv pob.
Cov kev pabcuam hauv zos thiab hauv network yog siv los ntawm cov khoom sib txuas lus. Ua tus lej code ntawm qhov kev zov me nyuam kom compact raws li qhov ua tau yog lub hom phiaj. High coupling ntawm no code thiab ob peb yam yog ua tau.
Daim ntawv thov cov khoom siv rov qab siv tau yog hu ua cov khoom siv. Xav txog cov yam ntxwv zoo li lub tawb nqa khoom rau koj lub vev xaib e-lag luam lossis daim ntawv thov them nyiaj rau koj cov neeg ua haujlwm tswj hwm.
Cov Cheebtsam tuaj yeem siv OSGi los nkaum lawv cov kev siv los ntawm lwm cov khoom siv thiab tsuas yog muab cov ntaub ntawv tsim nyog rau lawv ntawm cov kev pabcuam.
Qhov no tiv thaiv cov khoom los ntawm kev tsis txhob txwm hloov cov ntaub ntawv uas lawv yuav tsum tsis txhob nkag mus thiab tswj cov kev vam meej.
Txhua qhov kev sib txuas ntawm cov khoom siv hauv daim ntawv thov OSGi yog tsim los ntawm cov kev pabcuam hauv lub ntiaj teb zoo tagnrho. Ib pob Java muaj API uas tau teev tseg rau cov kev pabcuam.
Kev sib koom tes ntawm cov chaw muab kev pabcuam thiab cov neeg siv khoom xav tau kev siv cov chav kawm thiab / lossis kev sib txuas, uas ua rau API.
Tag nrho cov khoom OSGi tau ntim ua ke hauv cov pob khoom, txhua qhov suav nrog cov peev txheej uas lawv xav tau los ua haujlwm. Cov pob khoom muaj meej meej txog qhov lawv xav tau los ntawm ib puag ncig thiab lawv muaj peev xwm ua tau dab tsi.
cov kev pab cuam
- OSGi cov ntawv thov muaj kev nkag mus rau cov khoom siv sab nraud.
- Lub moj khaum tso cai rau kev pabcuam kev tsim qauv ntawm qib module.
- Nws ua rau nws muaj peev xwm tswj hwm cov versions thiab kev vam khom ntawm daim ntawv thov pob ntxiv rau kev tsim qauv thiab ua kom yooj yim rau kev sib koom nrog cov tsev qiv ntawv thib peb.
- Cov ntawv thov yog hloov tau yooj yim dua rau kev hloov pauv kev xav tau, nqa tau yooj yim dua, thiab nrawm dua rau reengineer.
- A daim ntawv thov web tuaj yeem siv los ua ib pawg ntawm OSGi cov khoom siv nrog lub neej muaj zog ua tsaug rau lub moj khaum kev koom ua ke nrog Java EE programming qauv.
- Es tsis txhob raug teeb tsa ua lub tsev qiv ntawv thib peb uas yog ib feem ntawm daim ntawv thov, lub moj khaum muab cov lus tshaj tawm los ua ke thiab ua kom yooj yim rau chav kuaj ntawm Lub Caij Nplooj Ntoos Hlav hauv daim ntawv qauv uas tau muab los ua ib feem ntawm daim ntawv thov server runtime.
- Rau cov ntawv thov kev lag luam ua los ntawm ntau cov khoom siv nrog cov kev ua neej nyob tsis muaj zog, lub moj khaum muaj kev sib cais.
- Nws muaj cov ntaub ntawv sib koom ua ke uas tuaj yeem khaws cov khoom sib koom ua ke thiab cov qauv siv los ntawm ntau daim ntawv thov, tiv thaiv txhua daim ntawv thov los ntawm kev xa cov ntawv sib cais ntawm txhua lub tsev qiv ntawv sib koom.
Pib nrog OSGi Felix caij nplooj ntoos hlav
Tau txais Cov Kev Pabcuam
Los ntawm rub tawm Apache Karaf qhov tshiab tshaj plaws los ntawm qhov chaw no, peb tuaj yeem pib peb OSGi taug txuj kev nyuaj.
Raws li Apache Felix, Apache kev siv ntawm OSGi specification, Apache Karaf muab lub platform rau OSGi-based applications.
Karaf muab ntau yam txiaj ntsig zoo rau saum Felix uas yuav pab peb kom paub peb tus kheej nrog OSGi, xws li cov kab lus hais kom ua rau peb sib txuas lus nrog lub platform.
Nkag Nkag Mus Rau Bundles
Ib daim ntawv thov yuav tsum tau ntim raws li OSGi pob ua ntej nws tuaj yeem khiav hauv OSGi ib puag ncig. Tsis tas li ntawd, daim ntawv teev npe nkag yuav tsum tau teev tseg; nws tsis yog tus qauv pej xeem zoo li qub void main(String[] args) muaj nuj nqi.
Yog li cia peb pib los ntawm kev tsim ib qho "Nyob zoo lub ntiaj teb” daim ntawv thov raws li OSGi.
Peb pib los ntawm kev tsim ib qho yooj yim OSGi API nyob ntawm:
OSGi runtime yuav nkag mus rau qhov kev vam khom, yog li cov pob khoom tsis tas yuav muaj nws. Yog li ntawd, nws yog cim raws li muab.
Tam sim no cia peb tsim qhov ncaj ncees HelloWorld chav kawm:
Cov chav kawm uas ua raws li cov ntsiab lus nkag rau cov pob khoom yuav tsum siv OSGi-muab BundleActivator interface.
Thaum cov pob khoom uas muaj cov chav kawm no tau pib, OSGi platform hu ua qhov pib () ua haujlwm. Ntawm qhov tod tes, tsis ntev ua ntej lub nras nres, lub luag haujlwm nres () hu ua.
Cia peb tsis txhob hnov qab tias txhua pob tsuas tuaj yeem muaj ib qho BundleActivator xwb. Ob txoj kev tuaj yeem sib txuas lus nrog OSGi runtime siv BundleContext cov khoom uas tau muab.
Tsim ib pob
Ua kom pom.xml qhov tseeb OSGi pob los ntawm kev hloov pauv tsim nyog.
Peb yuav tsum xub qhia meej meej tias peb lub hom phiaj yog los tsim ib pob khoom.
Tom qab ntawd, peb siv cov maven-bundle-plugin los ntim cov chav HelloWorld raws li OSGi pob, saib zoo ntawm Apache Felix zej zog:
Cov txiaj ntsig ntawm OSGi headers peb xav kom suav nrog hauv cov ntaub ntawv MANIFEST tau teev nyob rau hauv nqe lus qhia.
Bundle-Activator yog qhov tseeb lub npe tsim nyog ntawm BundleActivator tov uas yuav ua hauj lwm los pib thiab nres lub nras. Nws yog sib xws nrog cov chav kawm uas nyuam qhuav tsim.
Thaum nws tsis yog OSGi header, Private-Package header qhia cov plugin ntxiv cov pob rau hauv pob tab sis tsuas yog tsis ua rau nws nkag mus rau lwm cov plugins. mvn install command yuav tsum tau siv los tsim cov pob.
Txhim kho thiab khiav lub Bundle
Cia peb pib Karaf los ntawm kev khiav cov lus txib no:
qhov twg "KARAF HOME" yog hais txog lub nplaub tshev uas Karaf tau teeb tsa. Peb tuaj yeem siv cov lus txib hauv qab no los teeb tsa lub nras thaum Karaf console tam sim tshwm:
Siv lub zos Maven repository yog li cas Karaf tau hais kom thauj cov pob.
Rov qab cov ntaub ntawv tus lej ID, Karaf sau nws tawm. Tus ID no yuav txawv nyob ntawm seb muaj pes tsawg pob khoom tau teeb tsa yav dhau los. Lub pob tam sim no tau ua tiav tiav, thiab cov lus txib kom tso nws yog raws li hauv qab no:
Lub sijhawm koj tso lub pob, "Nyob Zoo Ntiaj Teb los ntawm Jay" qhia. Tam sim no peb tuaj yeem nres thiab tshem tawm cov pob khoom siv:
Lub console qhia "Goodbye World los ntawm Jay."
xaus
Cov neeg tsim khoom tuaj yeem yooj yim ntxiv cov haujlwm tshiab rau hauv daim ntawv thov lub vev xaib uas twb muaj lawm thaum ua kom nws ruaj ntseg thiab cais tawm ntawm lwm cov khoom ntawm cov haujlwm tseem ceeb los ntawm kev siv OSGi.
Peb tau kawm txog OSGi hauv tsab xov xwm no, suav nrog nws ua haujlwm li cas, nws qhov zoo, thiab qhov kev pab cuam ncaj nraim. Nws tsis yooj yim rau kev sib koom OSGi rau hauv koj tus kheej daim ntawv thov.
Zoo siab coding!
Sau ntawv cia Ncua