آپ کے پاس پہلے سے ہی اپنا سافٹ ویئر موجود ہے، لیکن پھر بھی آپ کو اپنے تکنیکی صارفین کو پلیٹ فارم کو بڑھانے کے لیے فعال کرنے کے لیے ایک زیادہ موثر طریقہ کی ضرورت ہے۔
اگرچہ OSGi زیادہ تر جاوا ڈویلپرز کے لیے مشہور ہے، لیکن اسے اپنی مصنوعات میں ضم کرنا ایک مشکل کام لگتا ہے۔ OSGi کے درست کام کے بارے میں وضاحت کا فقدان آگے کی سڑک کو مزید الجھا دیتا ہے۔
کسی بھی چیز کے برعکس جس کے ساتھ وہ تجربہ کرنا چاہیں گے، OSGi کو جاوا کے بہت سے ڈویلپرز کے لیے وسیع سمندر پر سفر کرنے کی کوشش کی طرح محسوس ہوتا ہے۔
یہ مضمون آپ کو ایک سادہ پروگرام کا استعمال کرتے ہوئے OSGi Felix موسم بہار کے ٹیوٹوریل سے متعارف کرائے گا اور اس کے فوائد اور دیگر اہم تفصیلات سے گزرے گا۔
تو OSGi کیا ہے؟
ماڈیولز اور اجزاء کی تخلیق اور تقسیم جاوا فریم ورک کے ذریعے ممکن ہوئی ہے جسے OSGi (اوپن سروس گیٹ وے انیشی ایٹو) کہا جاتا ہے۔
یہ فنکشن انکیپسولیشن اور لوز کپلنگ پر زور دیتا ہے، جو ڈویلپرز کو بہت سے فوائد فراہم کرتا ہے، بشمول ماڈیولر فنکشنلٹی جو سورس کوڈز اور ٹیسٹنگ کے درمیان آسانی سے منتقلی کی جا سکتی ہے جس کے لیے لامتناہی انحصار کی ضرورت نہیں ہے۔
OSGi کیسے کام کرتا ہے؟
جاوا کے لیے ایک متحرک جزو کے نظام کی وضاحت او ایس جی آئی نامی تصریحات کے ایک سیٹ سے کی جاتی ہے۔ یہ چشمی ایک ترقیاتی نقطہ نظر کو فعال کرتی ہے جہاں ایک ایپلی کیشن کو کئی حصوں سے بنایا جاتا ہے اور پھر بنڈلوں میں پیک کیا جاتا ہے۔
مقامی اور نیٹ ورک پر مبنی خدمات کو ان اجزاء کے ذریعے بات چیت کے لیے استعمال کیا جاتا ہے۔ پروگرام کے بنیادی کوڈ کو ممکنہ حد تک کمپیکٹ بنانا مقصد ہے۔ اس کوڈ اور کئی اجزاء کے درمیان اعلی جوڑے ممکن ہے۔
ایپلیکیشن کے دوبارہ قابل استعمال عمارت کے عناصر کو اجزاء کہا جاتا ہے۔ اپنی ای کامرس ویب سائٹ کے لیے شاپنگ کارٹ یا اپنے عملے کے انتظام کے نظام کے لیے پے رول کی درخواست جیسی خصوصیات کے بارے میں سوچیں۔
اجزاء OSGi کو دوسرے اجزاء سے اپنے نفاذ کو چھپانے کے لیے استعمال کر سکتے ہیں اور انہیں صرف خدمات کے ذریعے ضروری ڈیٹا فراہم کر سکتے ہیں۔
یہ اجزاء کو غیر ارادی طور پر ڈیٹا کو تبدیل کرنے سے روکتا ہے جس تک انہیں رسائی نہیں ہونی چاہئے اور انحصار کا انتظام کرتا ہے۔
OSGi ایپلی کیشن میں اجزاء کے درمیان تمام رابطے ایک مثالی دنیا میں خدمات کے ذریعے بنائے جاتے ہیں۔ جاوا پیکج میں وہ API ہوتا ہے جو خدمات کے لیے مخصوص ہوتا ہے۔
سروس فراہم کرنے والوں اور صارفین کے درمیان تعاون کے لیے کلاسز اور/یا انٹرفیس کے استعمال کی ضرورت ہوتی ہے، جو کہ API بناتے ہیں۔
OSGi کے تمام اجزاء بنڈلوں میں ایک ساتھ پیک کیے گئے ہیں، جن میں سے ہر ایک میں وہ وسائل شامل ہیں جن کی انہیں کام کرنے کی ضرورت ہے۔ بنڈل اس بارے میں بالکل واضح ہیں کہ انہیں ماحول سے کیا ضرورت ہے اور وہ کیا کرنے کے قابل ہیں۔
فوائد
- OSGi ایپلی کیشنز کو بیرونی بنڈل ریپوزٹری تک رسائی حاصل ہے۔
- فریم ورک ماڈیول کی سطح پر خدمت پر مبنی ڈیزائن کی اجازت دیتا ہے۔
- یہ تیسری پارٹی کی لائبریریوں کو معیاری بنانے اور ضم کرنے کو آسان بنانے کے علاوہ ایپلیکیشن بنڈلز کے ورژن اور انحصار کا انتظام کرنا ممکن بناتا ہے۔
- درخواستیں بدلتی ہوئی تقاضوں کے لیے زیادہ موافقت پذیر، زیادہ پورٹیبل، اور دوبارہ انجینیئر کرنے کے لیے تیز تر ہوتی ہیں۔
- A ویب ایپلی کیشن جاوا EE پروگرامنگ ماڈل کے ساتھ فریم ورک کے انضمام کی بدولت متحرک زندگی بھر کے ورژن والے OSGi بنڈلز کے ایک گروپ کے طور پر تعینات کیا جا سکتا ہے۔
- درخواست کے حصے کے طور پر فریق ثالث لائبریری کے طور پر انسٹال کیے جانے کے بجائے، فریم ورک ایک معیاری شکل میں اسپرنگ فریم ورک کی اعلانیہ اسمبلی اور ہموار یونٹ ٹیسٹنگ فراہم کرتا ہے جو ایپلیکیشن سرور کے رن ٹائم کے حصے کے طور پر فراہم کیا جاتا ہے۔
- متحرک لائف سائیکل کے ساتھ کئی ورژن والے بنڈلوں سے بنی کارپوریٹ ایپلی کیشنز کے لیے، فریم ورک تنہائی پیش کرتا ہے۔
- اس میں ایک مربوط بنڈل ریپوزٹری پر مشتمل ہے جو کئی ایپلی کیشنز کے ذریعے استعمال کیے گئے مشترکہ اور ورژن والے بنڈلز کو اسٹور کر سکتا ہے، ہر ایپلیکیشن کو ہر مشترکہ لائبریری کی علیحدہ کاپی تعینات کرنے سے روکتا ہے۔
OSGi Felix spring کے ساتھ شروع کرنا
وسائل حاصل کرنا
سے اپاچی کراف کا تازہ ترین ورژن ڈاؤن لوڈ کر کے اس لئے ہم اس سائٹ پر گائیڈز تیار کرتے ہیں۔ ۔، ہم اپنا OSGi ایڈونچر شروع کر سکتے ہیں۔
Apache Felix کی بنیاد پر، OSGi کی تفصیلات کا اپاچی نفاذ، Apache Karaf OSGi پر مبنی ایپلی کیشنز کے لیے ایک پلیٹ فارم فراہم کرتا ہے۔
Karaf Felix کے اوپر مختلف مددگار خصوصیات فراہم کرتا ہے جو ہمیں OSGi سے آشنا کرنے میں مدد فراہم کرے گا، جیسا کہ ایک کمانڈ لائن انٹرفیس جو ہمیں پلیٹ فارم کے ساتھ بات چیت کرنے کے قابل بنائے گا۔
بنڈلوں کے لیے انٹری پوائنٹ
کسی درخواست کو OSGi ماحول میں چلانے سے پہلے اسے OSGi بنڈل کے طور پر پیک کیا جانا چاہیے۔ مزید برآں، درخواست کے اندراج کے مقام کی وضاحت ہونی چاہیے۔ یہ معیاری عوامی جامد باطل مین (String[] args) فنکشن نہیں ہے۔
تو آئیے ایک بنا کر شروع کریں "ہیلو ورلڈOSGi پر مبنی درخواست۔
ہم ایک بنیادی OSGi API انحصار قائم کرکے شروع کرتے ہیں:
OSGi رن ٹائم کو انحصار تک رسائی حاصل ہوگی، اس لیے بنڈل میں اسے رکھنے کی ضرورت نہیں ہے۔ لہذا، اسے بطور سپلائی نشان زد کیا گیا ہے۔
اب آئیے سیدھی سادی ہیلو ورلڈ کلاس بنائیں:
وہ کلاسز جو بنڈلز کے لیے انٹری پوائنٹس کے طور پر کام کرتی ہیں انہیں OSGi کے فراہم کردہ BundleActivator انٹرفیس کو لاگو کرنا چاہیے۔
جب اس کلاس پر مشتمل بنڈل لانچ کیا جاتا ہے، OSGi پلیٹ فارم start() فنکشن کو کال کرتا ہے۔ دوسری طرف، بنڈل کے رکنے سے کچھ دیر پہلے، فنکشن stop() کہا جاتا ہے۔
آئیے یہ نہ بھولیں کہ ہر بنڈل میں صرف ایک بنڈل ایکٹیویٹر ہو سکتا ہے۔ دونوں طریقے دیے گئے BundleContext آبجیکٹ کا استعمال کرتے ہوئے OSGi رن ٹائم کے ساتھ بات چیت کر سکتے ہیں۔
بنڈل بنانا
ضروری تبدیلیاں کرکے pom.xml کو ایک حقیقی OSGi بنڈل بنائیں۔
ہمیں پہلے واضح طور پر اظہار کرنا چاہیے کہ ہمارا مقصد ایک بنڈل تیار کرنا ہے۔
پھر، ہم HelloWorld کلاس کو OSGi بنڈل کے طور پر پیک کرنے کے لیے maven-bundle-plugin کا استعمال کرتے ہیں، بشکریہ Apache Felix کمیونٹی:
OSGi ہیڈرز کی قدریں جنہیں ہم بنڈل کی MANIFEST فائل میں شامل کرنا چاہتے ہیں ہدایات کے سیکشن میں بیان کیے گئے ہیں۔
Bundle-Activator درحقیقت BundleActivator حل کا صحیح طور پر اہل نام ہے جسے بنڈل کو شروع کرنے اور روکنے کے لیے استعمال کیا جائے گا۔ یہ ابھی تخلیق کردہ کلاس کے ساتھ مطابقت رکھتا ہے۔
اگرچہ یہ OSGi ہیڈر نہیں ہے، پرائیویٹ-پیکیج ہیڈر پلگ ان کو پیکیج کو بنڈل میں شامل کرنے کی ہدایت کرتا ہے لیکن اسے دوسرے پلگ انز تک قابل رسائی نہیں بناتا ہے۔ mvn install کمانڈ کو بنڈل بنانے کے لیے استعمال کیا جانا چاہیے۔
بنڈل کو انسٹال کرنا اور چلانا
آئیے اس کمانڈ کو چلا کر کراف شروع کریں:
جہاں "KARAF HOME" سے مراد وہ فولڈر ہے جہاں Karaf قائم کیا گیا تھا۔ جب Karaf کنسول پرامپٹ ظاہر ہوتا ہے تو ہم بنڈل کو انسٹال کرنے کے لیے درج ذیل کمانڈ استعمال کر سکتے ہیں:
مقامی ماون ریپوزٹری کا استعمال یہ ہے کہ کس طرح کراف کو بنڈل لوڈ کرنے کے لیے کہا جاتا ہے۔
بنڈل کی عددی ID واپس کرتے ہوئے، کراف اسے لکھتا ہے۔ یہ ID اس لحاظ سے مختلف ہو سکتی ہے کہ پہلے کتنے بنڈل انسٹال ہو چکے ہیں۔ بنڈل اب کامیابی کے ساتھ انسٹال ہو چکا ہے، اور اسے لانچ کرنے کا حکم حسب ذیل ہے:
جس لمحے آپ پیکج لانچ کرتے ہیں، "Hello World by Jay" دکھاتا ہے۔ اب ہم اس کا استعمال کرتے ہوئے بنڈل کو روک اور ہٹا سکتے ہیں:
کنسول "جئے کے ذریعہ الوداع ورلڈ" دکھاتا ہے۔
نتیجہ
ڈویلپرز آسانی سے موجودہ ویب ایپلیکیشن میں نئی فعالیت شامل کر سکتے ہیں اور اسے محفوظ رکھتے ہوئے OSGi کا استعمال کر کے مرکزی پروگرام کے دیگر اجزاء سے الگ کر سکتے ہیں۔
ہم نے اس پوسٹ میں OSGi کے بارے میں سیکھا ہے، بشمول یہ کیسے کام کرتا ہے، اس کے فوائد، اور ایک سیدھا سادہ پروگرام۔ OSGi کو اپنی درخواست میں شامل کرنا مشکل نہیں ہے۔
مبارک کوڈنگ!
جواب دیجئے