Diġà għandek is-softwer tiegħek fis-seħħ, iżda għad għandek bżonn metodu aktar effettiv li jippermetti lill-utenti tekniċi tiegħek jespandu l-pjattaforma.
Anki jekk OSGi huwa magħruf sew mill-biċċa l-kbira tal-iżviluppaturi Java, l-integrazzjoni tagħha fil-prodott tiegħek tista 'tidher biċċa xogħol skoraġġanti. In-nuqqas ta 'ċarezza dwar il-ħidma preċiża ta' OSGi tkompli tħawwad it-triq 'il quddiem.
B'kuntrast ma 'kull ħaġa li jixtiequ jesperimentaw biha, OSGi iħossu aktar qisu jipprova jbaħħar il-baħar wiesa' għal ħafna żviluppaturi Java.
Dan l-artikolu jintroduċik fit-tutorja tar-rebbiegħa OSGi Felix billi tuża programm sempliċi u tgħaddi, il-vantaġġi tiegħu, u dettalji importanti oħra.
Allura x'inhu OSGi?
Il-ħolqien u d-distribuzzjoni ta' moduli u komponenti huwa possibbli permezz tal-qafas Java magħruf bħala OSGi (Open Service Gateway Initiative).
Tenfasizza l-inkapsulament tal-funzjoni u l-akkoppjar maħlul, li joffri diversi vantaġġi lill-iżviluppaturi, inkluża funzjonalità modulari li hija faċilment trasferibbli bejn il-kodiċijiet tas-sors u l-ittestjar li ma jeħtieġx dipendenzi bla tmiem.
Kif jaħdem l-OSGi?
Sistema ta 'komponenti dinamiku għal Java hija definita minn sett ta' speċifikazzjonijiet imsejħa OSGi. Dawn l-ispeċifikazzjonijiet jippermettu approċċ ta 'żvilupp fejn applikazzjoni hija mibnija minn numru ta' partijiet u mbagħad ippakkjat f'qatet.
Servizzi lokali u bbażati fuq in-netwerk jintużaw minn dawn il-komponenti biex jikkomunikaw. L-għan huwa li l-kodiċi ewlieni tal-programm ikun kompatt kemm jista' jkun. Akkoppjar għoli bejn dan il-kodiċi u diversi komponenti huwa possibbli.
L-elementi tal-bini li jistgħu jerġgħu jintużaw tal-applikazzjoni jissejħu komponenti. Aħseb dwar karatteristiċi bħal shopping cart għall-websajt tal-kummerċ elettroniku tiegħek jew applikazzjoni tal-pagi għas-sistema tal-ġestjoni tal-persunal tiegħek.
Il-komponenti jistgħu jużaw OSGi biex jaħbu l-implimentazzjonijiet tagħhom minn komponenti oħra u jipprovdulhom biss id-dejta meħtieġa permezz tas-servizzi.
Dan jipprevjeni komponenti milli jbiddlu b'mod mhux intenzjonat data li m'għandux ikollhom aċċess għaliha u jimmaniġġja d-dipendenzi.
Il-konnessjonijiet kollha bejn il-komponenti f'applikazzjoni OSGi jsiru permezz ta 'servizzi f'dinja ideali. Pakkett Java fih l-API li hija speċifikata għas-servizzi.
Il-kollaborazzjoni bejn il-fornituri tas-servizz u l-klijenti teħtieġ l-użu ta 'klassijiet u/jew interfaces, li jiffurmaw l-API.
Il-komponenti kollha tal-OSGi huma ppakkjati flimkien f'qatet, li kull wieħed minnhom jinkludi r-riżorsi li jeħtieġu biex jiffunzjonaw. Il-pakketti huma pjuttost ċari dwar dak li għandhom bżonn mill-ambjent u dak li huma kapaċi.
benefiċċji
- L-applikazzjonijiet OSGi għandhom aċċess għal repożitorji tal-pakketti esterni.
- Il-qafas jippermetti disinn orjentat lejn is-servizz fil-livell tal-modulu.
- Jagħmilha possibbli li jiġu mmaniġġjati l-verżjonijiet u d-dipendenzi tal-pakketti tal-applikazzjonijiet minbarra l-istandardizzazzjoni u li tagħmilha aktar faċli biex jiġu integrati libreriji ta’ partijiet terzi.
- L-applikazzjonijiet huma aktar adattabbli għal talbiet li qed jinbidlu, aktar portabbli, u aktar malajr biex jerġgħu jinġiebu.
- A applikazzjoni tal-web jistgħu jiġu skjerati bħala grupp ta 'pakketti OSGi verżjonijiet b'ħajja dinamika grazzi għall-integrazzjoni tal-qafas mal-mudell ta' programmar Java EE.
- Minflok ma jiġi installat bħala librerija ta’ parti terza bħala parti mill-applikazzjoni, il-qafas jipprovdi l-assemblaġġ dikjarattiv u l-ittestjar tal-unità ssimplifikat tal-Qafas tar-Rebbiegħa f’forma standardizzata li hija pprovduta bħala parti mir-runtime tas-server tal-applikazzjoni.
- Għal applikazzjonijiet korporattivi magħmulin minn diversi pakketti verżjonijiet b'ċiklu ta' ħajja dinamiċi, il-qafas joffri iżolament.
- Fiha repożitorju tal-pakketti integrat li jista 'jaħżen bundles komuni u verżjonati kondiviżi użati minn diversi applikazzjonijiet, u jipprevjeni lil kull applikazzjoni milli tuża kopja separata ta' kull librerija kondiviża.
Nibdew bir-rebbiegħa OSGi Felix
Ikseb ir-Riżorsi
Billi tniżżel l-aktar verżjoni reċenti ta' Apache Karaf minn dan is-sit, nistgħu nibdew l-avventura tagħna OSGi.
Ibbażat fuq Apache Felix, l-implimentazzjoni Apache tal-ispeċifikazzjoni OSGi, Apache Karaf jipprovdi pjattaforma għal applikazzjonijiet ibbażati fuq OSGi.
Karaf jipprovdi diversi karatteristiċi ta 'għajnuna fuq Felix li se jgħinuna biex nifamiljarizzaw lilna nfusna ma' OSGi, bħal interface tal-linja tal-kmand li se tippermettilna nikkomunikaw mal-pjattaforma.
Punt tad-Dħul Għall-Gzuz
Applikazzjoni trid tiġi ppakkjata bħala pakkett OSGi qabel ma tkun tista' titħaddem f'ambjent OSGi. Barra minn hekk, il-punt tad-dħul tal-applikazzjoni għandu jiġi speċifikat; mhuwiex il-funzjoni standard public static void main(String[] args).
Mela ejja nibdew billi noħolqu "Hello dinja” applikazzjoni bbażata fuq OSGi.
Nibdew billi nistabbilixxu dipendenza bażika tal-API OSGi:
Ir-runtime OSGi se jkollu aċċess għad-dipendenza, għalhekk il-pakkett m'għandux għalfejn ikun fih. Għalhekk, huwa mmarkat bħala fornut.
Issa ejja noħolqu l-klassi HelloWorld sempliċi:
Il-klassijiet li jaġixxu bħala punti ta' dħul għall-pakketti għandhom jimplimentaw l-interface BundleActivator ipprovduta minn OSGi.
Meta titnieda l-pakkett li fih din il-klassi, il-pjattaforma OSGi ssejjaħ il-funzjoni start(). Min-naħa l-oħra, ftit qabel ma titwaqqaf il-pakkett, tissejjaħ il-funzjoni stop().
Ma ninsewx li kull pakkett jista' jkollu BundleActivator wieħed biss. Iż-żewġ modi jistgħu jikkomunikaw mar-runtime OSGi billi tuża l-oġġett BundleContext li jingħata.
Ħolqien ta' Bundle
Agħmel il-pom.xml pakkett OSGi veru billi tagħmel il-bidliet meħtieġa.
L-ewwel irridu nesprimu b'mod ċar li l-għan tagħna huwa li nipproduċu pakkett.
Imbagħad, nużaw il-maven-bundle-plugin biex nippakkjaw il-klassi HelloWorld bħala bundle OSGi, bil-korteżija tal-komunità Apache Felix:
Il-valuri tal-headers OSGi li nixtiequ ninkludu fil-fajl MANIFEST tal-pakkett huma speċifikati fit-taqsima tal-istruzzjonijiet.
Bundle-Activator huwa tabilħaqq l-isem kwalifikat sew tas-soluzzjoni BundleActivator li se tkun impjegata biex tibda u twaqqaf il-pakkett. Huwa kompatibbli mal-klassi li għadha kif inħolqot.
Filwaqt li mhuwiex header OSGi, l-header Private-Package jagħti struzzjonijiet lill-plugin biex iżid il-pakkett mal-pakkett iżda sempliċement ma jagħmilhiex aċċessibbli għal plugins oħra. Il-kmand mvn install għandu jintuża biex jinħoloq il-pakkett.
L-installazzjoni u t-tmexxija tal-budle
Ejja nibdew Karaf billi nħaddmu dan il-kmand:
fejn “KARAF HOME” tirreferi għall-folder fejn ġie stabbilit Karaf. Nistgħu nużaw il-kmand li ġej biex ninstallaw il-pakkett meta jidher il-pront tal-konsole Karaf:
L-użu tar-repożitorju Maven lokali huwa kif Karaf jgħidlek biex jgħabbi l-pakkett.
Jirritorna l-ID numeriku tal-pakkett, Karaf jikteb. Din l-ID tista' tkun differenti skont kemm ġew installati qatet qabel. Il-pakkett issa ġie installat b'suċċess, u l-kmand biex titnieda huwa kif ġej:
Fil-mument li tniedi l-pakkett, jintwera "Hello World by Jay". Issa nistgħu nwaqqfu u nneħħu l-pakkett billi tuża:
Il-console turi "Goodbye World by Jay."
konklużjoni
L-iżviluppaturi jistgħu faċilment iżidu funzjonalità ġdida ma' applikazzjoni tal-web eżistenti filwaqt li jżommuha sigura u iżolata minn komponenti oħra tal-programm prinċipali billi jużaw OSGi.
Tgħallimna dwar OSGi f'din il-kariga, inkluż kif tiffunzjona, il-vantaġġi tagħha, u programm sempliċi. Mhuwiex diffiċli li tinkorpora OSGi fl-applikazzjoni tiegħek stess.
Kodifikazzjoni kuntenti!
Ħalli Irrispondi