Сізде бағдарламалық құрал бұрыннан бар, бірақ сізге әлі де техникалық пайдаланушыларға платформаны кеңейтуге мүмкіндік беретін тиімдірек әдіс қажет.
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 Felix серіппесін пайдалануды бастау
Ресурстарды алу
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 бумасына айналдырыңыз.
Біз ең алдымен біздің мақсатымыз байлам жасау екенін анық айтуымыз керек.
Содан кейін, Apache Felix қауымдастығының рұқсатымен HelloWorld класын OSGi бумасы ретінде орау үшін maven-bundle-plugin қолданамыз:
Буманың MANIFEST файлына қосқымыз келетін OSGi тақырыптарының мәндері нұсқаулар бөлімінде көрсетілген.
Bundle-Activator - бұл пакетті бастау және тоқтату үшін қолданылатын BundleActivator шешімінің дұрыс атауы. Ол жаңадан құрылған сыныппен үйлесімді.
Бұл OSGi тақырыбы болмаса да, Private-Package тақырыбы плагинге пакетті бумаға қосуға нұсқау береді, бірақ оны басқа плагиндер үшін қолжетімді етпейді. Буманы жасау үшін mvn орнату пәрменін пайдалану керек.
Буманы орнату және іске қосу
Карафты осы пәрменді орындау арқылы бастайық:
мұндағы “KARAF HOME” Караф орнатылған қалтаны білдіреді. Karaf консолі шақыруы пайда болған кезде топтаманы орнату үшін келесі пәрменді пайдалана аламыз:
Жергілікті Maven репозиторийін пайдалану Карафқа пакетті жүктеуді қалай айтады.
Буманың сандық идентификаторын қайтарып, Караф оны жазады. Бұл идентификатор бұрын қанша бума орнатылғанына байланысты әр түрлі болуы мүмкін. Топтама сәтті орнатылды және оны іске қосу пәрмені келесідей:
Пакетті іске қосқан кезде «Hello World by Jay» көрсетіледі. Енді топтаманы тоқтатып, жоюға болады:
Консольде «Джейдің қош бол әлемі» көрсетіледі.
қорытынды
Әзірлеушілер OSGi арқылы негізгі бағдарламаның басқа құрамдас бөліктерінен қауіпсіз және оқшауланған күйде сақтай отырып, бар веб-бағдарламаға жаңа функционалдылықты оңай қоса алады.
Біз осы постта OSGi туралы білдік, оның ішінде оның қалай жұмыс істейтінін, оның артықшылықтарын және қарапайым бағдарламаны білдік. OSGi-ді өз қолданбаңызға енгізу қиын емес.
Кодтау құтты болсын!
пікір қалдыру