Шумо аллакай нармафзори худро дар ҷои худ доред, аммо ба ҳар ҳол ба шумо усули муассиртари имкон додани корбарони техникии шумо барои васеъ кардани платформа лозим аст.
Гарчанде ки OSGi ба аксари таҳиягарони Java хуб маълум аст, ҳамгироӣ кардани он ба маҳсулоти шумо метавонад кори душвор ба назар расад. Набудани возеҳият дар бораи кори дақиқи OSGi роҳи пешро боз ҳам печидатар мекунад.
Баръакси ҳар чизе, ки онҳо мехоҳанд озмоиш кунанд, OSGi бештар ба кӯшиши шино кардани баҳри васеъ ба бисёре аз таҳиягарони Java монанд аст.
Ин мақола шуморо бо дастури баҳории OSGi Felix бо истифода аз барномаи мустақим шинос мекунад ва аз он гузаред, бартариҳои он ва дигар тафсилоти муҳим.
Пас OSGi чист?
Эҷод ва паҳн кардани модулҳо ва ҷузъҳо тавассути чаҳорчӯбаи Java бо номи OSGi (Open Service Gateway Initiative) имконпазир мегардад.
Он ба инкапсуляцияи функсионалӣ ва пайвастагии фуҷур таъкид мекунад, ки барои таҳиягарон як қатор бартариҳоро пешниҳод мекунад, аз ҷумла функсионалии модулӣ, ки ба осонӣ байни рамзҳои манбаъ ва санҷиш интиқол дода мешавад, ки ба вобастагии беохир ниёз надорад.
OSGi чӣ гуна кор мекунад?
Системаи ҷузъҳои динамикӣ барои Java бо маҷмӯи мушаххасот бо номи OSGi муайян карда мешавад. Ин хусусиятҳо равиши рушдро фароҳам меоранд, ки дар он барнома аз як қатор қисмҳо сохта мешавад ва сипас ба бастаҳо баста мешавад.
Ин ҷузъҳо барои муошират хидматҳои маҳаллӣ ва шабакавӣ истифода мешаванд. Ҳадаф то ҳадди имкон паймон кардани рамзи асосии барнома мебошад. Пайвастшавии баланд байни ин код ва якчанд ҷузъҳо имконпазир аст.
Унсурҳои бинои такрории барнома ҷузъҳо номида мешаванд. Дар бораи хусусиятҳо ба монанди аробаи харид барои вебсайти тиҷорати электронии шумо ё барномаи музди меҳнат барои системаи идоракунии кормандон фикр кунед.
Компонентҳо метавонанд OSGi-ро истифода баранд, то татбиқи худро аз ҷузъҳои дигар пинҳон кунанд ва танҳо тавассути хидматҳо ба онҳо маълумоти заруриро пешниҳод кунанд.
Ин ҷузъҳоро аз тағир додани маълумоти ногаҳонӣ пешгирӣ мекунад, ки онҳо ба онҳо дастрасӣ надоранд ва вобастагиҳоро идора мекунанд.
Ҳама пайвастҳо байни ҷузъҳои замимаи OSGi тавассути хидматҳо дар ҷаҳони идеалӣ анҷом дода мешаванд. Бастаи Java дорои API мебошад, ки барои хидматҳо таъин шудааст.
Ҳамкории провайдерҳои хидматрасон ва муштариён истифодаи синфҳо ва/ё интерфейсҳоро, ки API-ро ташкил медиҳанд, талаб мекунад.
Ҳама ҷузъҳои OSGi дар бастаҳо бастабандӣ шудаанд, ки ҳар яки онҳо захираҳоеро дар бар мегиранд, ки барои фаъолияташон заруранд. Бастаҳо комилан равшананд, ки онҳо аз муҳити атроф ба чӣ ниёз доранд ва ба чӣ қодиранд.
Манфиатҳо
- Барномаҳои OSGi ба анбори бастаҳои беруна дастрасӣ доранд.
- Чаҳорчӯба имкон медиҳад, ки тарҳи ба хидмат нигаронидашуда дар сатҳи модул.
- Он имкон медиҳад, ки версияҳо ва вобастагии бастаҳои барномаҳо ба ғайр аз стандартизатсия ва осон кардани ҳамгироӣ кардани китобхонаҳои тарафи сеюм идора карда шаванд.
- Барномаҳо ба талаботҳои тағйирёбанда бештар мутобиқ мешаванд, бештар қобили истифода ва тезтар азнавсозӣ мешаванд.
- A барномаи веб метавонад ҳамчун як гурӯҳи бастаҳои версияи OSGi бо умри динамикӣ ба шарофати ҳамгироии чаҳорчӯба бо модели барномасозии Java EE ҷойгир карда шавад.
- Ба ҷои он ки ҳамчун китобхонаи тарафи сеюм ҳамчун як қисми барнома насб карда шавад, чаҳорчӯба маҷлиси декларативӣ ва санҷиши воҳиди соддашудаи Spring Framework-ро дар шакли стандартишуда таъмин мекунад, ки ҳамчун як қисми вақти иҷрои сервери барнома таъмин карда мешавад.
- Барои барномаҳои корпоративӣ, ки аз якчанд бастаҳои версияи дорои давраҳои динамикӣ иборатанд, чаҳорчӯба ҷудокуниро пешниҳод мекунад.
- Он дорои анбори маҷмӯаи маҷмӯӣ мебошад, ки метавонад бастаҳои умумӣ ва версияи муштаракро, ки аз ҷониби якчанд барнома истифода мешаванд, нигоҳ дошта, ҳар як барномаро аз ҷойгиркунии нусхаи алоҳидаи ҳар як китобхонаи муштарак пешгирӣ кунад.
Оғози кор бо баҳори OSGi Felix
Гирифтани захираҳо
Бо зеркашии версияи охирини Apache Karaf аз ин сомона, мо метавонем саёҳати OSGi-и худро оғоз кунем.
Дар асоси Apache Felix, татбиқи Apache мушаххасоти OSGi, Apache Karaf платформа барои замимаҳои OSGi асос ёфтааст.
Караф дар болои Феликс хусусиятҳои гуногуни муфидро пешкаш мекунад, ки ба мо дар шинос шудан бо OSGi, ба монанди интерфейси сатри фармон, ки ба мо имкон медиҳад, ки бо платформа муошират кунем.
Нуқтаи вуруд барои бастаҳо
Пеш аз он ки он дар муҳити OSGi кор кунад, барнома бояд ҳамчун бастаи OSGi баста шавад. Илова бар ин, нуқтаи вуруди ариза бояд муайян карда шавад; он функсияи стандартии умуми статикии void main(String[] args) нест.
Пас биёед бо эҷод кардани "Салом Ҷаҳон” ариза дар асоси OSGi.
Мо аз таъсиси вобастагии асосии OSGi API оғоз мекунем:
Вақти иҷроиши OSGi ба вобастагӣ дастрасӣ дорад, бинобар ин, баста набояд онро дар бар гирад. Аз ин рӯ, он ҳамчун додашуда қайд карда мешавад.
Акнун биёед синфи рости HelloWorld-ро эҷод кунем:
Синфҳо, ки ҳамчун нуқтаи вуруд барои бастаҳо амал мекунанд, бояд интерфейси BundleActivator-ро, ки аз ҷониби OSGi пешниҳод шудааст, амалӣ кунанд.
Вақте ки бастаи дорои ин синф оғоз мешавад, платформаи OSGi функсияи start() -ро даъват мекунад. Аз тарафи дигар, чанде пеш аз боздоштани баста, функсияи stop() даъват карда мешавад.
Фаромӯш набояд кард, ки ҳар як баста метавонад танҳо як BundleActivator дошта бошад. Ҳарду роҳ метавонанд бо вақти кории OSGi бо истифода аз объекти BundleContext, ки дода шудааст, муошират кунанд.
Эҷоди баста
Бо ворид кардани тағйироти зарурӣ pom.xml-ро як бастаи ҳақиқии OSGi созед.
Мо бояд пеш аз ҳама равшан баён кунем, ки ҳадафи мо истеҳсоли баста аст.
Сипас, мо аз maven-bundle-plugin барои бастабандии синфи HelloWorld ҳамчун бастаи OSGi истифода мебарем, аз ҷониби ҷомеаи Apache Felix:
Қиматҳои сарлавҳаҳои OSGi, ки мо мехоҳем ба файли MANIFEST баста дохил кунем, дар бахши дастурҳо нишон дода шудаанд.
Bundle-Activator воқеан номи дурусти ҳалли BundleActivator мебошад, ки барои оғоз ва қатъ кардани баста истифода мешавад. Он бо синфи нав сохташуда мувофиқ аст.
Гарчанде ки он сарлавҳаи OSGi нест, сарлавҳаи Private-Package ба плагин дастур медиҳад, ки бастаро ба баста илова кунад, аммо онро ба плагинҳои дигар дастрас намекунад. Фармони mvn install бояд барои сохтани баста истифода шавад.
Насб ва иҷро кардани баста
Биёед Карафро бо иҷро кардани ин фармон оғоз кунем:
ки дар он «КАРАФ ХОНА» ба папкаи он чо Караф гузошта шуда буд. Вақте ки дархости консолии Karaf пайдо мешавад, мо метавонем фармони зеринро барои насб кардани баста истифода барем:
Истифодаи анбори маҳаллии Maven ин аст, ки ба Караф гуфта мешавад, ки бастаро бор кунад.
Баргардонидани ID рақамии баста, Караф онро менависад. Ин ID метавонад вобаста аз чанд бастаи қаблан насбшуда фарқ кунад. Маҷмӯа ҳоло бомуваффақият насб карда шуд ва фармони оғоз кардани он чунин аст:
Вақте ки шумо бастаро оғоз мекунед, "Hello World by Jay" намоиш дода мешавад. Ҳоло мо метавонем бастаро бо истифода аз инҳо боздорем ва хориҷ кунем:
Дар консол "Godbye World by Jay" намоиш дода мешавад.
хулоса
Таҳиягарон метавонанд бо истифода аз OSGi ба осонӣ ба веб-барномаи мавҷуда функсияҳои нав илова кунанд ва дар ҳоле ки онро бехатар ва аз ҷузъҳои дигари барномаи асосӣ ҷудо нигоҳ доранд.
Мо дар бораи OSGi дар ин пост, аз ҷумла чӣ гуна кор кардан, бартариҳои он ва барномаи мустақимро омӯхтем. Дохил кардани OSGi ба замимаи шахсии худ душвор нест.
Рамзгузории хушбахт!
Дин ва мазҳаб