Сизде программалык камсыздооңуз мурунтан эле бар, бирок сизге дагы эле платформаны кеңейтүү үчүн техникалык колдонуучуларга мүмкүнчүлүк берүүнүн натыйжалуу ыкмасы керек.
OSGi көпчүлүк Java иштеп чыгуучуларына белгилүү болсо да, аны продуктуңузга интеграциялоо оңой эместей сезилиши мүмкүн. OSGiнин так иштеши жөнүндө түшүнүктүн жоктугу алдыга карай жолду ого бетер кыйындатат.
Алар эксперимент кылгысы келген бардык нерседен айырмаланып, OSGi көптөгөн Java иштеп чыгуучулары үчүн кең деңизди сүзүүгө аракет кылгандай сезилет.
Бул макалада сизди OSGi Felix жазгы окуу куралы менен тааныштырат жана аны жөнөкөй программа менен тааныштырат, анын артыкчылыктары жана башка маанилүү деталдары.
Ошентип, OSGi деген эмне?
Модулдарды жана компоненттерди түзүү жана жайылтуу OSGi (Open Service Gateway Initiative) деп аталган Java алкагында мүмкүн болот.
Ал иштеп чыгуучуларга бир катар артыкчылыктарды, анын ичинде булак коддору жана чексиз көз карандылыкты талап кылбаган тестирлөө ортосунда оңой которула турган модулдук функцияларды сунуш кылган функцияны инкапсуляциялоого жана бош туташууга басым жасайт.
OSGi кантип иштейт?
Java үчүн динамикалык компонент системасы OSGi деп аталган спецификациялардын топтому менен аныкталат. Бул мүнөздөмөлөр тиркеме бир нече бөлүктөн курулуп, анан таңгактарга топтолгон иштеп чыгуу ыкмасына мүмкүндүк берет.
Жергиликтүү жана тармакка негизделген кызматтар бул компоненттер тарабынан байланыш үчүн колдонулат. Программанын негизги кодун мүмкүн болушунча компакттуу кылуу максат болуп саналат. Бул код менен бир нече компоненттердин ортосунда жогорку байланыш болушу мүмкүн.
Колдонмонун көп жолу колдонулуучу курулуш элементтери компоненттер деп аталат. Электрондук коммерциялык веб-сайтыңыз үчүн соода арабасы же кызматкерлерди башкаруу тутумуңуз үчүн эмгек акы төлөө колдонмосу сыяктуу функциялар жөнүндө ойлонуп көрүңүз.
Компоненттер OSGi'ди башка компоненттерден ишке ашырууну жашыруу үчүн колдоно алышат жана аларга керектүү маалыматтарды гана кызматтар аркылуу бере алышат.
Бул компоненттердин аларга кирүү мүмкүнчүлүгү болбошу керек болгон маалыматтарды кокусунан өзгөртүүсүнө жол бербейт жана көз карандылыкты башкарат.
OSGi тиркемесинин компоненттеринин ортосундагы бардык байланыштар идеалдуу дүйнөдө кызматтар аркылуу ишке ашырылат. Java пакети кызматтар үчүн белгиленген APIди камтыйт.
Кызмат көрсөтүүчүлөр менен кардарлардын ортосундагы кызматташуу API түзүүчү класстарды жана/же интерфейстерди колдонууну талап кылат.
OSGi компоненттеринин баары таңгактарга топтолгон, алардын ар бири иштеши үчүн керектүү ресурстарды камтыйт. Пачкалар айлана-чөйрөдөн эмнеге муктаж экени жана эмнеге жөндөмдүү экени так көрсөтүлөт.
пайдасы
- OSGi тиркемелери тышкы таңгак репозиторийлерине кирүү мүмкүнчүлүгүнө ээ.
- Алкак модулдун деңгээлинде тейлөөгө багытталган дизайнга мүмкүндүк берет.
- Бул стандартташтыруудан жана үчүнчү тараптын китепканаларын интеграциялоону жеңилдетүүдөн тышкары, тиркемелердин топтомдорунун версияларын жана көз карандылыктарын башкарууга мүмкүндүк берет.
- Тиркемелер өзгөрүп жаткан талаптарга көбүрөөк ыңгайлашат, портативдик жана реинженердик тезирээк.
- A чакан колдонмо алкактын Java EE программалоо модели менен интеграциясынын аркасында динамикалык өмүр бою версияланган OSGi таңгактарынын тобу катары жайгаштырылышы мүмкүн.
- Колдонмонун бир бөлүгү катары үчүнчү тараптын китепканасы катары орнотулгандын ордуна, алкак колдонмо серверинин иштөө убактысынын бир бөлүгү катары берилген стандартташтырылган формада Spring Framework декларативдик чогулушун жана жөнөкөйлөштүрүлгөн бирдик тестирлөөсүн камсыз кылат.
- Динамикалык жашоо циклдери бар бир нече версияланган таңгактардан турган корпоративдик тиркемелер үчүн алкак изоляцияны сунуш кылат.
- Ал бир нече тиркемелер тарабынан колдонулган жалпы жана версияланган таңгактарды сактай турган интегралдык таңгак репозиторийди камтыйт, бул ар бир тиркеме ар бир жалпы китепкананын өзүнчө көчүрмөсүн жайылтууга жол бербейт.
OSGi Феликс жазы менен баштоо
Ресурстарды алуу
Apache Karafтын эң акыркы версиясын жүктөп алуу менен бул сайт, биз OSGi укмуштуу окуяларыбызды баштасак болот.
Apache Felixтин негизинде, Apache OSGi спецификациясынын ишке ашырылышы, Apache Karaf OSGi негизиндеги тиркемелер үчүн платформаны камсыз кылат.
Караф Феликстин үстүнө ар кандай пайдалуу функцияларды берет, алар бизге OSGi менен таанышууга жардам берет, мисалы, платформа менен байланышууга мүмкүндүк берүүчү командалык сап интерфейси.
Топтомдор үчүн кирүү чекити
Тиркемени OSGi чөйрөсүндө иштетүүдөн мурун OSGi таңгагы катары пакеттөө керек. Кошумча, өтүнмөнүн кирүү чекити көрсөтүлүшү керек; бул стандарттуу коомдук статикалык void main(String[] args) функциясы эмес.
Ошентип, келгиле, түзүү менен баштайлы "салам дүйнө” OSGi негизиндеги тиркеме.
Биз негизги OSGi API көз карандылыгын орнотуу менен баштайбыз:
OSGi иштөө убактысы көз карандылыкка жетүү мүмкүнчүлүгүнө ээ болот, андыктан таңгакта аны камтуунун кереги жок. Ошондуктан, ал берилген деп белгиленет.
Эми түз HelloWorld классын түзөлү:
Топтомдор үчүн кирүү чекиттери катары иштеген класстар OSGi тарабынан берилген BundleActivator интерфейсин ишке ашырышы керек.
Бул классты камтыган таңгак ишке киргизилгенде, OSGi платформасы start() функциясын чакырат. Экинчи жагынан, таңгак токтогонго аз калганда stop() функциясы чакырылат.
Ар бир таңгакта бир гана BundleActivator болушу мүмкүн экенин унутпайлы. Эки жол тең берилген BundleContext объектинин жардамы менен OSGi иштөө убактысы менен байланыша алат.
Пакет түзүү
Керектүү өзгөртүүлөрдү киргизүү менен pom.xml чыныгы OSGi таңгагына айлантыңыз.
Биринчиден, биздин максатыбыз таңгак чыгаруу экенин ачык айтышыбыз керек.
Андан кийин, HelloWorld классын Apache Felix коомчулугунун сылык-сыпаачылыгы менен OSGi таңгагы катары пакеттөө үчүн maven-bundle-plugin колдонобуз:
Биз таңгактын MANIFEST файлына киргизгибиз келген OSGi аталыштарынын маанилери нускамалар бөлүмүндө көрсөтүлгөн.
Bundle-Activator чындыгында таңгакты баштоо жана токтотуу үчүн колдонула турган BundleActivator чечиминин туура квалификацияланган аталышы. Бул жаңы эле түзүлгөн класс менен шайкеш келет.
Бул OSGi аталышы болбосо да, Private-Package аталышы плагинге пакетти пакетке кошууну буйруйт, бирок аны башка плагиндер үчүн жеткиликтүү кылбайт. Топтомду түзүү үчүн mvn орнотуу буйругу колдонулушу керек.
Топтомду орнотуу жана иштетүү
Карафты бул буйрукту аткаруу менен баштайлы:
мында “KARAF HOME” Караф орнотулган папканы билдирет. Karaf консолунун чакыруусу пайда болгондо, таңгакты орнотуу үчүн төмөнкү буйрукту колдоно алабыз:
Жергиликтүү Maven репозиторийинин жардамы менен Карафка таңгакты жүктөө керектиги айтылат.
Таңгактын сандык идентификаторун кайтарып, Караф аны жазат. Бул ID мурун канча таңгак орнотулганына жараша айырмаланышы мүмкүн. Пакет ийгиликтүү орнотулду жана аны ишке киргизүү буйругу төмөнкүдөй:
Топтомду ишке киргизгениңизде "Hello World by Jay" көрсөтүлөт. Эми биз таңгакты токтотуп, өчүрө алабыз:
Консоль "Джей менен коштошкон дүйнөнү" көрсөтөт.
жыйынтыктоо
Иштеп чыгуучулар OSGi колдонуу менен аны коопсуз жана негизги программанын башка компоненттеринен обочолонуп сактап, учурдагы веб-тиркемеге жаңы функцияларды оңой кошо алышат.
Биз бул постто OSGi жөнүндө, анын ичинде анын иштеши, анын артыкчылыктары жана түз программа менен тааныштык. OSGiди өзүңүздүн колдонмоңузга киргизүү кыйын эмес.
Бактылуу коддоо!
Таштап Жооп