သင့်တွင် သင့်ဆော့ဖ်ဝဲကို ထားရှိထားပြီးဖြစ်သော်လည်း ပလပ်ဖောင်းကို ချဲ့ထွင်ရန်အတွက် သင်၏နည်းပညာအသုံးပြုသူများကို ပိုမိုထိရောက်သောနည်းလမ်းတစ်ခု လိုအပ်နေသေးသည်။
OSGi သည် Java developer အများစုအတွက် လူသိများသော်လည်း ၎င်းကို သင့်ထုတ်ကုန်တွင် ပေါင်းစည်းခြင်းသည် ခက်ခဲသောအလုပ်တစ်ခုဟု ထင်ရပေမည်။ OSGi ၏တိကျသောလုပ်ဆောင်မှုများနှင့်ပတ်သက်၍ ရှင်းလင်းပြတ်သားမှုမရှိခြင်းသည် ရှေ့သို့လမ်းကြောင်းကို ပိုမိုရှုပ်ထွေးစေသည်။
၎င်းတို့စမ်းသပ်လိုသည့်အရာနှင့် ဆန့်ကျင်ဘက်အနေဖြင့် OSGi သည် Java developer အများအပြားထံ ကျယ်ပြန့်သောပင်လယ်ပြင်ကို ရွက်လွှင့်ရန် ကြိုးပမ်းနေသကဲ့သို့ ခံစားရသည်။
ဤဆောင်းပါးသည် သင့်အား ရိုးရှင်းသောပရိုဂရမ်ကိုအသုံးပြု၍ OSGi Felix နွေဦးသင်ခန်းစာနှင့် မိတ်ဆက်ပေးမည်ဖြစ်ပြီး၊ ၎င်း၏အားသာချက်များနှင့် အခြားအရေးကြီးသောအသေးစိတ်အချက်အလက်များကို ဖြတ်သန်းသွားမည်ဖြစ်သည်။
ဒါဆို OSGi ဆိုတာဘာလဲ။
မော်ဂျူးများနှင့် အစိတ်အပိုင်းများကို ဖန်တီးခြင်းနှင့် ဖြန့်ဝေခြင်းကို OSGi (Open Service Gateway Initiative) ဟုလူသိများသော Java မူဘောင်ဖြင့် ဖြစ်နိုင်သည်။
၎င်းသည် အရင်းအမြစ်ကုဒ်များနှင့် အဆုံးမဲ့မှီခိုမှုမလိုအပ်သော စမ်းသပ်မှုများကြားတွင် အလွယ်တကူလွှဲပြောင်းနိုင်သော modular functionality အပါအဝင် developer များအတွက် အားသာချက်များစွာကို ပေးဆောင်သည့် function encapsulation နှင့် loose coupling ကို အလေးပေးပါသည်။
OSGi ဘယ်လိုအလုပ်လုပ်သလဲ။
Java အတွက် ဒိုင်းနမစ်အစိတ်အပိုင်းစနစ်အား OSGi ဟုခေါ်သော သတ်မှတ်ချက်များအစုံဖြင့် သတ်မှတ်သည်။ ဤသတ်မှတ်ချက်များသည် အက်ပလီကေးရှင်းကို အစိတ်အပိုင်းများစွာမှ တည်ဆောက်ပြီးနောက် အစုအဝေးအဖြစ် ထုပ်ပိုးထားသည့် ဖွံ့ဖြိုးတိုးတက်ရေးချဉ်းကပ်မှုကို ပံ့ပိုးပေးသည်။
ဆက်သွယ်ရန်အတွက် ဒေသတွင်းနှင့် ကွန်ရက်အခြေပြု ဝန်ဆောင်မှုများကို ဤအစိတ်အပိုင်းများက အသုံးပြုပါသည်။ ပရိုဂရမ်၏ ပင်မကုဒ်ကို ဖြစ်နိုင်သလောက် ကျစ်ကျစ်လျစ်လျစ်ဖြစ်စေရန်မှာ ရည်ရွယ်ချက်ဖြစ်သည်။ ဤကုဒ်နှင့် အစိတ်အပိုင်းများစွာကြားတွင် ချိတ်ဆက်မှု မြင့်မားနိုင်သည်။
အပလီကေးရှင်း၏ ပြန်သုံးနိုင်သော အဆောက်အဦဒြပ်စင်များကို အစိတ်အပိုင်းများဟုခေါ်သည်။ သင့် e-commerce ဝဘ်ဆိုက်အတွက် စျေးဝယ်လှည်း သို့မဟုတ် သင့်ဝန်ထမ်းစီမံခန့်ခွဲမှုစနစ်အတွက် လစာအပလီကေးရှင်းတစ်ခုကဲ့သို့သော ဝန်ဆောင်မှုများကို စဉ်းစားပါ။
အစိတ်အပိုင်းများသည် ၎င်းတို့၏အကောင်အထည်ဖော်မှုများကို အခြားအစိတ်အပိုင်းများမှ ဖုံးကွယ်ရန် OSGi ကို အသုံးပြုနိုင်ပြီး လိုအပ်သောဒေတာများကို ဝန်ဆောင်မှုများမှတစ်ဆင့်သာ ၎င်းတို့အား ပေးဆောင်နိုင်သည်။
၎င်းသည် အစိတ်အပိုင်းများကို ၎င်းတို့ထံဝင်ရောက်ခွင့်မရှိသည့်အပြင် မှီခိုမှုများအား စီမံခန့်ခွဲရန်မဖြစ်သင့်သော အချက်အလက်များကို မရည်ရွယ်ဘဲ ပြောင်းလဲခြင်းမှ ကာကွယ်ပေးသည်။
OSGi အပလီကေးရှင်းရှိ အစိတ်အပိုင်းများကြား ချိတ်ဆက်မှုအားလုံးကို စံပြကမ္ဘာရှိ ဝန်ဆောင်မှုများမှတစ်ဆင့် ပြုလုပ်ထားသည်။ Java package တစ်ခုတွင် ဝန်ဆောင်မှုများအတွက် သတ်မှတ်ထားသော API ပါရှိသည်။
ဝန်ဆောင်မှုပေးသူများနှင့် ဖောက်သည်များအကြား ပူးပေါင်းဆောင်ရွက်ခြင်းသည် API ကို ပေါင်းစပ်ထားသည့် အတန်းများနှင့်/သို့မဟုတ် အင်တာဖေ့စ်များကို အသုံးပြုရန် လိုအပ်သည်။
OSGi အစိတ်အပိုင်းများအားလုံးကို အစုအစည်းများဖြင့် ထုပ်ပိုးထားပြီး၊ တစ်ခုစီတွင် ၎င်းတို့လုပ်ဆောင်ရန် လိုအပ်သည့် အရင်းအမြစ်များ ပါဝင်သည်။ အစုအဝေးများသည် ပတ်ဝန်းကျင်မှ လိုအပ်သည်များနှင့် ၎င်းတို့ တတ်နိုင်သည်များကို ရှင်းရှင်းလင်းလင်း သိသာပါသည်။
အက်ိဳးေက်းဇူးမ်ား
- OSGi အပလီကေးရှင်းများသည် ပြင်ပအစုအဝေးများ သိုလှောင်ရာများသို့ ဝင်ရောက်ခွင့်ရှိသည်။
- မူဘောင်သည် မော်ဂျူးအဆင့်တွင် ဝန်ဆောင်မှုကို ဦးတည်သည့် ဒီဇိုင်းကို ခွင့်ပြုသည်။
- ၎င်းသည် စံချိန်စံညွှန်းသတ်မှတ်ခြင်းအပြင် ပြင်ပအဖွဲ့အစည်းစာကြည့်တိုက်များကို ပေါင်းစည်းရန် ပိုမိုလွယ်ကူစေသည့်အပြင် အပလီကေးရှင်းအစုအဝေးများ၏ ဗားရှင်းများနှင့် မှီခိုမှုများကိုလည်း စီမံခန့်ခွဲနိုင်စေသည်။
- အပလီကေးရှင်းများသည် ပြောင်းလဲနေသော တောင်းဆိုချက်များကို လိုက်လျောညီထွေဖြစ်အောင်၊ ပိုမိုသယ်ဆောင်ရလွယ်ကူပြီး ပြန်လည်အင်ဂျင်နီယာလုပ်ရန် ပိုမိုမြန်ဆန်ပါသည်။
- A ဝဘ်အပလီကေးရှင်း Java EE ပရိုဂရမ်းမင်းမော်ဒယ်နှင့် framework ၏ပေါင်းစပ်မှုကြောင့် dynamic lifetime ဖြင့် versioned OSGi အစုအဝေးအုပ်စုတစ်စုအဖြစ် အသုံးချနိုင်သည်။
- အပလီကေးရှင်း၏တစ်စိတ်တစ်ပိုင်းအနေဖြင့်တတိယပါတီစာကြည့်တိုက်အဖြစ်ထည့်သွင်းခြင်းအစား၊ မူဘောင်သည် အပလီကေးရှင်းဆာဗာ runtime ၏တစ်စိတ်တစ်ပိုင်းအဖြစ်ပံ့ပိုးပေးသည့် Spring Framework ၏ ကြေငြာစုဝေးမှုနှင့် ပိုမိုကောင်းမွန်သောယူနစ်စမ်းသပ်ခြင်းတို့ကို ပံ့ပိုးပေးပါသည်။
- ပြောင်းလဲနေသော အသက်ကယ်စက်ဝန်းများဖြင့် ဗားရှင်းအများအပြားဖြင့် ဖွဲ့စည်းထားသော ကော်ပိုရိတ်အပလီကေးရှင်းများအတွက်၊ မူဘောင်သည် သီးခြားခွဲထုတ်ခြင်းကို ပေးပါသည်။
- ၎င်းတွင် အပလီကေးရှင်းများစွာက အသုံးပြုသည့် မျှဝေထားသော ဘုံနှင့်ဗားရှင်းထုတ်ထားသောအတွဲများကို သိမ်းဆည်းနိုင်သည့် ပေါင်းစပ်အစုအဝေးတစ်ခုပါရှိပြီး အပလီကေးရှင်းတစ်ခုစီမှ မျှဝေထားသည့် ဒစ်ဂျစ်တိုက်တစ်ခုစီ၏ သီးခြားမိတ္တူကို အသုံးချခြင်းမှ ကာကွယ်ပေးသည်။
OSGi Felix နွေဦးရာသီကို စတင်လိုက်ပါ။
အရင်းအမြစ်များရယူခြင်း။
Apache Karaf ၏နောက်ဆုံးထွက်ဗားရှင်းကိုဒေါင်းလုဒ်လုပ်ခြင်းဖြင့် ဒီ siteကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ OSGi စွန့်စားခန်းကို စတင်နိုင်ပါသည်။
Apache Felix၊ Apache ၏ OSGi သတ်မှတ်ချက်ကို အကောင်အထည်ဖော်မှုအပေါ် အခြေခံ၍ Apache Karaf သည် OSGi-based applications များအတွက် platform တစ်ခု ထောက်ပံ့ပေးသည်။
Karaf သည် ပလပ်ဖောင်းနှင့် ဆက်သွယ်နိုင်စေမည့် command line interface ကဲ့သို့သော OSGi နှင့် ရင်းနှီးကျွမ်းဝင်စေရန် ကူညီပေးမည့် Felix ၏ထိပ်တွင် အမျိုးမျိုးသော အသုံးဝင်သောအင်္ဂါရပ်များကို ပံ့ပိုးပေးပါသည်။
အစုအဝေးများအတွက် ဝင်ခွင့်အမှတ်
အပလီကေးရှင်းတစ်ခုကို OSGi ပတ်ဝန်းကျင်တွင် မလည်ပတ်မီ OSGi အစုအဝေးတစ်ခုအဖြစ် ထုပ်ပိုးရပါမည်။ ထို့အပြင်၊ လျှောက်လွှာဝင်ခွင့်အမှတ်ကို သတ်မှတ်ပေးရမည်။ ၎င်းသည် ပုံမှန် public static void main(String[] args) function မဟုတ်ပါ။
ဒီတော့ "တစ်ခုဖန်တီးလိုက်ကြရအောင်"မင်္ဂလာပါကမ္ဘာ့ဖလား"OSGi ကိုအခြေခံထားသောလျှောက်လွှာ။
ကျွန်ုပ်တို့သည် အခြေခံ OSGi API မှီခိုမှုကို တည်ထောင်ခြင်းဖြင့် စတင်သည်-
OSGi runtime သည် မှီခိုမှုသို့ ဝင်ရောက်နိုင်မည်ဖြစ်ပြီး ထို့ကြောင့် အစုအဝေးတွင် ၎င်းပါဝင်ရန် မလိုအပ်ပါ။ ထို့ကြောင့် ၎င်းကို ပေးဆောင်သည်ဟု မှတ်သားထားသည်။
အခု ရိုးရိုးရှင်းရှင်း HelloWorld အတန်းကို ဖန်တီးလိုက်ရအောင်။
အစုအဝေးများအတွက် ဝင်ခွင့်အမှတ်များအဖြစ် လုပ်ဆောင်သည့် အတန်းများသည် OSGi-ပံ့ပိုးပေးထားသော BundleActivator အင်တာဖေ့စ်ကို အကောင်အထည်ဖော်ရမည်ဖြစ်သည်။
ဤအတန်းပါရှိသော အတွဲကို စတင်သောအခါ၊ OSGi ပလပ်ဖောင်းသည် start() လုပ်ဆောင်ချက်ကို ခေါ်သည်။ အခြားတစ်ဖက်တွင်၊ အစုအဝေးကိုမရပ်တန့်မီမကြာမီတွင် function stop() ဟုခေါ်သည်။
အတွဲတစ်ခုစီတွင် BundleActivator တစ်ခုသာရှိနိုင်သည်ကို မမေ့ပါနှင့်။ နည်းလမ်းနှစ်ခုစလုံးသည် ပေးထားသော BundleContext အရာဝတ္ထုကို အသုံးပြု၍ OSGi runtime နှင့် ဆက်သွယ်နိုင်သည်။
Bundle တစ်ခုကို ဖန်တီးခြင်း။
လိုအပ်သောပြောင်းလဲမှုများပြုလုပ်ခြင်းဖြင့် pom.xml ကို စစ်မှန်သော OSGi အစုအဝေးတစ်ခုအဖြစ် ပြုလုပ်ပါ။
ကျွန်ုပ်တို့၏ပန်းတိုင်သည် အစုအဝေးတစ်ခုထုတ်လုပ်ရန်ဖြစ်ကြောင်း ဦးစွာရှင်းလင်းစွာဖော်ပြရပါမည်။
ထို့နောက်၊ ကျွန်ုပ်တို့သည် Apache Felix အသိုင်းအဝိုင်း၏ လေးစားဖွယ်ဖြစ်သော OSGi အစုအဝေးအဖြစ် HelloWorld အတန်းကို ထုပ်ပိုးရန်အတွက် maven-bundle-plugin ကို အသုံးပြုပါသည်။
အစုအစည်း၏ MANIFEST ဖိုင်တွင် ကျွန်ုပ်တို့ထည့်သွင်းလိုသော OSGi ခေါင်းစီးများ၏ တန်ဖိုးများကို ညွှန်ကြားချက်ကဏ္ဍတွင် သတ်မှတ်ထားပါသည်။
Bundle-Activator သည် အမှန်ပင် အစုအဝေးကို စတင်ရန်နှင့် ရပ်တန့်ရန်အတွက် အသုံးပြုမည့် BundleActivator ဖြေရှင်းချက်၏ အရည်အချင်းပြည့်မီသော အမည်ဖြစ်သည်။ ၎င်းသည် ဖန်တီးထားသော အတန်းနှင့် လိုက်ဖက်ပါသည်။
၎င်းသည် OSGi ခေါင်းစီးမဟုတ်သော်လည်း Private-Package ခေါင်းစီးသည် ပလပ်အင်အား အစုအဝေးတွင် ပက်ကေ့ချ်ထည့်ရန် ညွှန်ကြားထားသော်လည်း ၎င်းကို အခြားပလပ်အင်များကို အသုံးပြုနိုင်စေရန် မလုပ်ဆောင်ပါ။ အစုအစည်းကိုဖန်တီးရန် mvn ထည့်သွင်းသည့်အမိန့်ကို အသုံးပြုသင့်သည်။
အစုအဝေးကို ထည့်သွင်းခြင်းနှင့် လုပ်ဆောင်ခြင်း။
ဤ command ကို run ခြင်းဖြင့် Karaf ကိုစတင်ကြပါစို့။
"KARAF HOME" သည် Karaf ကိုတည်ဆောက်ထားသည့်ဖိုင်တွဲကိုရည်ညွှန်းသည်။ Karaf console prompt ပေါ်လာသောအခါ အစုအစည်းကို ထည့်သွင်းရန် အောက်ပါ command ကို အသုံးပြုနိုင်ပါသည်။
ဒေသခံ Maven repository ကိုအသုံးပြုခြင်းသည် Karaf အစုအဝေးကိုတင်ရန်ပြောသည့်ပုံဖြစ်သည်။
အစုအဝေး၏ ဂဏန်း ID ကို ပြန်ပေးခြင်းဖြင့် Karaf က ၎င်းကို ရေးသည်။ ယခင်က ထည့်သွင်းထားသည့် အစုအစည်းအရေအတွက်ပေါ်မူတည်၍ ဤ ID ကွဲပြားနိုင်သည်။ အစုအစည်းကို ယခု အောင်မြင်စွာ ထည့်သွင်းပြီးဖြစ်ပြီး ၎င်းကို စတင်ရန် အမိန့်မှာ အောက်ပါအတိုင်း ဖြစ်သည်။
"Hello World by Jay" ပက်ကေ့ဂျ်ကို သင်စတင်လိုက်သည့်အခိုက်တွင် ပြသထားသည်။ ယခု ကျွန်ုပ်တို့သည် အစုအဝေးကို ရပ်တန့်ပြီး ဖယ်ရှားနိုင်သည်-
ကွန်ဆိုးလ်တွင် “Goodbye World by Jay” ကို ပြသထားသည်။
ကောက်ချက်
Developer များသည် OSGi ကို အသုံးပြု၍ ပင်မပရိုဂရမ်၏ အခြားအစိတ်အပိုင်းများနှင့် သီးခြားခွဲထားစဉ်တွင် ၎င်းကို လုံခြုံအောင် ထိန်းသိမ်းထားစဉ်တွင် လက်ရှိ ဝဘ်အက်ပ်လီကေးရှင်းတစ်ခုတွင် လုပ်ဆောင်ချက်အသစ်များကို အလွယ်တကူ ထည့်သွင်းနိုင်သည်။
၎င်းလုပ်ဆောင်ပုံ၊ ၎င်း၏အားသာချက်များနှင့် ရိုးရှင်းသော ပရိုဂရမ်များအပါအဝင် ဤပို့စ်တွင် OSGi အကြောင်း ကျွန်ုပ်တို့ လေ့လာထားပါသည်။ သင်၏ကိုယ်ပိုင်အက်ပ်လီကေးရှင်းတွင် OSGi ပေါင်းစပ်ရန်မခက်ခဲပါ။
ပျော်ရွှင်စွာ ကုဒ်ရေးပါ။
တစ်ဦးစာပြန်ရန် Leave