আপনার কাছে ইতিমধ্যেই আপনার সফ্টওয়্যার রয়েছে, তবে আপনার প্রযুক্তিগত ব্যবহারকারীদের প্ল্যাটফর্মটি প্রসারিত করতে সক্ষম করার আরও কার্যকর পদ্ধতির প্রয়োজন।
যদিও OSGi বেশিরভাগ জাভা বিকাশকারীদের কাছে সুপরিচিত, এটিকে আপনার পণ্যে একীভূত করা একটি কঠিন কাজ বলে মনে হতে পারে। OSGi এর সুনির্দিষ্ট কাজ সম্পর্কে স্বচ্ছতার অভাব সামনের রাস্তাকে আরও জটিল করে তোলে।
তারা যে কিছু নিয়ে পরীক্ষা করতে চায় তার বিপরীতে, OSGi অনেক জাভা বিকাশকারীদের কাছে প্রশস্ত সমুদ্রে যাত্রা করার চেষ্টা করার মতো বেশি অনুভব করে।
এই নিবন্ধটি আপনাকে একটি সহজবোধ্য প্রোগ্রাম ব্যবহার করে OSGi ফেলিক্স স্প্রিং টিউটোরিয়ালের সাথে পরিচয় করিয়ে দেবে এবং এর সুবিধাগুলি এবং অন্যান্য গুরুত্বপূর্ণ বিবরণ দিয়ে যাবে।
তাহলে OSGi কি?
OSGi (ওপেন সার্ভিস গেটওয়ে ইনিশিয়েটিভ) নামে পরিচিত জাভা ফ্রেমওয়ার্ক দ্বারা মডিউল এবং উপাদানগুলি তৈরি এবং বিতরণ করা সম্ভব হয়েছে।
এটি ফাংশন এনক্যাপসুলেশন এবং লুজ কাপলিং এর উপর জোর দেয়, যা ডেভেলপারদের জন্য বেশ কিছু সুবিধা প্রদান করে, যার মধ্যে মডুলার কার্যকারিতা রয়েছে যা সোর্স কোড এবং টেস্টিং এর মধ্যে অনায়াসে হস্তান্তরযোগ্য যা অশেষ নির্ভরতার প্রয়োজন নেই।
কিভাবে OSGi কাজ করে?
জাভার জন্য একটি গতিশীল উপাদান সিস্টেম OSGi নামক নির্দিষ্টকরণের একটি সেট দ্বারা সংজ্ঞায়িত করা হয়। এই চশমাগুলি একটি উন্নয়ন পদ্ধতিকে সক্ষম করে যেখানে একটি অ্যাপ্লিকেশন অনেকগুলি অংশ থেকে তৈরি করা হয় এবং তারপরে বান্ডিলে প্যাকেজ করা হয়।
স্থানীয় এবং নেটওয়ার্ক-ভিত্তিক পরিষেবাগুলি যোগাযোগের জন্য এই উপাদানগুলি দ্বারা ব্যবহৃত হয়। প্রোগ্রামের মূল কোডকে যতটা সম্ভব কমপ্যাক্ট করাই হল লক্ষ্য। এই কোড এবং বিভিন্ন উপাদানের মধ্যে উচ্চ সংযোগ সম্ভব।
অ্যাপ্লিকেশনটির পুনর্ব্যবহারযোগ্য বিল্ডিং উপাদানগুলিকে উপাদান বলা হয়। আপনার ই-কমার্স ওয়েবসাইটের জন্য একটি শপিং কার্ট বা আপনার স্টাফ ম্যানেজমেন্ট সিস্টেমের জন্য একটি বেতন অ্যাপ্লিকেশনের মতো বৈশিষ্ট্যগুলি সম্পর্কে চিন্তা করুন৷
উপাদানগুলি OSGi ব্যবহার করতে পারে অন্য উপাদানগুলি থেকে তাদের বাস্তবায়ন লুকিয়ে রাখতে এবং শুধুমাত্র পরিষেবার মাধ্যমে তাদের প্রয়োজনীয় ডেটা সরবরাহ করতে পারে।
এটি উপাদানগুলিকে অনিচ্ছাকৃতভাবে ডেটা পরিবর্তন করতে বাধা দেয় যাতে তাদের অ্যাক্সেস থাকা উচিত নয় এবং নির্ভরতা পরিচালনা করে।
একটি OSGi অ্যাপ্লিকেশনের উপাদানগুলির মধ্যে সমস্ত সংযোগ একটি আদর্শ বিশ্বে পরিষেবার মাধ্যমে তৈরি করা হয়। একটি জাভা প্যাকেজে API রয়েছে যা পরিষেবাগুলির জন্য নির্দিষ্ট করা হয়।
পরিষেবা প্রদানকারী এবং গ্রাহকদের মধ্যে সহযোগিতার জন্য ক্লাস এবং/অথবা ইন্টারফেসের ব্যবহার প্রয়োজন, যা API তৈরি করে।
সমস্ত OSGi উপাদানগুলি বান্ডিলে একত্রে প্যাকেজ করা হয়, যার প্রতিটিতে কাজ করার জন্য প্রয়োজনীয় সংস্থানগুলি অন্তর্ভুক্ত থাকে। বান্ডিলগুলি পরিবেশ থেকে তাদের কী প্রয়োজন এবং তারা কী করতে সক্ষম সে সম্পর্কে বেশ স্পষ্ট।
উপকারিতা
- OSGi অ্যাপ্লিকেশনগুলির বহিরাগত বান্ডেল সংগ্রহস্থলগুলিতে অ্যাক্সেস রয়েছে।
- ফ্রেমওয়ার্ক মডিউল স্তরে পরিষেবা-ভিত্তিক ডিজাইনের অনুমতি দেয়।
- এটি তৃতীয় পক্ষের লাইব্রেরিগুলিকে একীভূত করা এবং মানসম্মত করার পাশাপাশি অ্যাপ্লিকেশন বান্ডেলগুলির সংস্করণ এবং নির্ভরতাগুলি পরিচালনা করা সম্ভব করে তোলে।
- অ্যাপ্লিকেশনগুলি পরিবর্তনের চাহিদার সাথে আরও বেশি খাপ খাইয়ে নিতে পারে, আরও পোর্টেবল, এবং পুনরায় ইঞ্জিনিয়ার করার জন্য দ্রুত৷
- A ওয়েব অ্যাপ্লিকেশন জাভা EE প্রোগ্রামিং মডেলের সাথে ফ্রেমওয়ার্কের একীকরণের জন্য একটি গতিশীল জীবনকালের সাথে সংস্করণযুক্ত OSGi বান্ডেলগুলির একটি গ্রুপ হিসাবে স্থাপন করা যেতে পারে।
- অ্যাপ্লিকেশনের অংশ হিসাবে তৃতীয় পক্ষের লাইব্রেরি হিসাবে ইনস্টল করার পরিবর্তে, ফ্রেমওয়ার্কটি স্প্রিং ফ্রেমওয়ার্কের ঘোষণামূলক সমাবেশ এবং সুবিন্যস্ত ইউনিট পরীক্ষা প্রদান করে একটি প্রমিত আকারে যা অ্যাপ্লিকেশন সার্ভার রানটাইমের অংশ হিসাবে সরবরাহ করা হয়।
- ডায়নামিক লাইফসাইকেল সহ বেশ কয়েকটি সংস্করণযুক্ত বান্ডিল নিয়ে গঠিত কর্পোরেট অ্যাপ্লিকেশনগুলির জন্য, কাঠামোটি বিচ্ছিন্নতার প্রস্তাব দেয়।
- এটিতে একটি সমন্বিত বান্ডিল সংগ্রহস্থল রয়েছে যা বিভিন্ন অ্যাপ্লিকেশন দ্বারা ব্যবহৃত ভাগ করা সাধারণ এবং সংস্করণযুক্ত বান্ডেলগুলিকে সংরক্ষণ করতে পারে, প্রতিটি অ্যাপ্লিকেশনকে প্রতিটি ভাগ করা লাইব্রেরির একটি পৃথক অনুলিপি স্থাপন করা থেকে বাধা দেয়।
OSGi ফেলিক্স স্প্রিং দিয়ে শুরু করা
সম্পদ পাওয়া
থেকে Apache Karaf এর সাম্প্রতিকতম সংস্করণ ডাউনলোড করে এই দিকে, আমরা আমাদের OSGi অ্যাডভেঞ্চার শুরু করতে পারি।
Apache Felix এর উপর ভিত্তি করে, OSGi স্পেসিফিকেশনের Apache বাস্তবায়ন, Apache Karaf OSGi-ভিত্তিক অ্যাপ্লিকেশনের জন্য একটি প্ল্যাটফর্ম প্রদান করে।
Karaf ফেলিক্সের উপরে বিভিন্ন সহায়ক বৈশিষ্ট্য সরবরাহ করে যা আমাদেরকে OSGi-এর সাথে পরিচিত করতে সাহায্য করবে, যেমন একটি কমান্ড লাইন ইন্টারফেস যা আমাদের প্ল্যাটফর্মের সাথে যোগাযোগ করতে সক্ষম করবে।
বান্ডিল জন্য এন্ট্রি পয়েন্ট
একটি অ্যাপ্লিকেশন একটি OSGi পরিবেশে চালানোর আগে একটি OSGi বান্ডেল হিসাবে প্যাকেজ করা আবশ্যক। উপরন্তু, আবেদন এন্ট্রি পয়েন্ট নির্দিষ্ট করা আবশ্যক; এটি স্ট্যান্ডার্ড পাবলিক স্ট্যাটিক ভ্যায়েড মেইন (স্ট্রিং[] আর্গস) ফাংশন নয়।
তো চলুন একটি তৈরি করে শুরু করিহ্যালো ওয়ার্ল্ড"ওএসজিআই ভিত্তিক অ্যাপ্লিকেশন।
আমরা একটি মৌলিক OSGi API নির্ভরতা প্রতিষ্ঠা করে শুরু করি:
OSGi রানটাইম নির্ভরতা অ্যাক্সেস করবে, তাই বান্ডেল এটি ধারণ করার প্রয়োজন নেই। অতএব, এটি সরবরাহকৃত হিসাবে চিহ্নিত করা হয়।
এখন সোজা HelloWorld ক্লাস তৈরি করা যাক:
যে ক্লাসগুলি বান্ডেলগুলির জন্য এন্ট্রি পয়েন্ট হিসাবে কাজ করে তাদের অবশ্যই OSGi-প্রদত্ত BundleActivator ইন্টারফেস প্রয়োগ করতে হবে।
যখন এই শ্রেণীর বান্ডিলটি চালু করা হয়, তখন OSGi প্ল্যাটফর্ম start() ফাংশনকে কল করে। অন্য দিকে, বান্ডিলটি থামানোর কিছুক্ষণ আগে, ফাংশন stop() বলা হয়।
আসুন ভুলে গেলে চলবে না যে প্রতিটি বান্ডিলে শুধুমাত্র একটি BundleActivator থাকতে পারে। উভয় উপায়ে দেওয়া হয়েছে BundleContext অবজেক্ট ব্যবহার করে OSGi রানটাইমের সাথে যোগাযোগ করতে পারে।
একটি বান্ডিল তৈরি করা হচ্ছে
প্রয়োজনীয় পরিবর্তন করে pom.xml কে একটি সত্যিকারের OSGi বান্ডিল তৈরি করুন।
আমাদের প্রথমে স্পষ্টভাবে প্রকাশ করতে হবে যে আমাদের লক্ষ্য একটি বান্ডিল তৈরি করা।
তারপর, আমরা Apache Felix সম্প্রদায়ের সৌজন্যে HelloWorld ক্লাসকে OSGi বান্ডেল হিসাবে প্যাকেজ করার জন্য maven-bundle-plugin ব্যবহার করি:
OSGi হেডারগুলির মানগুলি আমরা বান্ডেলের MANIFEST ফাইলে অন্তর্ভুক্ত করতে চাই নির্দেশাবলী বিভাগে নির্দিষ্ট করা আছে।
Bundle-Activator হল প্রকৃতপক্ষে BundleActivator সলিউশনের সঠিকভাবে যোগ্য নাম যা বান্ডিল শুরু এবং বন্ধ করার জন্য নিযুক্ত করা হবে। এটি সদ্য তৈরি করা ক্লাসের সাথে সামঞ্জস্যপূর্ণ।
যদিও এটি একটি OSGi শিরোনাম নয়, ব্যক্তিগত-প্যাকেজ শিরোনামটি প্লাগইনকে প্যাকেজটিকে বান্ডেলে যুক্ত করার নির্দেশ দেয় তবে এটিকে অন্য প্লাগইনগুলিতে অ্যাক্সেসযোগ্য করে তোলে না। mvn install কমান্ডটি বান্ডেল তৈরি করতে ব্যবহার করা উচিত।
বান্ডিলটি ইনস্টল এবং চালানো
আসুন এই কমান্ডটি চালিয়ে কারাফ শুরু করি:
যেখানে "কারফ হোম" সেই ফোল্ডারটিকে বোঝায় যেখানে কারাফ সেট আপ করা হয়েছিল। Karaf কনসোল প্রম্পট প্রদর্শিত হলে বান্ডিল ইনস্টল করতে আমরা নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারি:
স্থানীয় মাভেন সংগ্রহস্থল ব্যবহার করে কারাফকে বান্ডিল লোড করতে বলা হয়।
বান্ডেলের সাংখ্যিক আইডি ফেরত দিয়ে কারাফ এটি লিখেছে। পূর্বে কতগুলি বান্ডেল ইনস্টল করা হয়েছে তার উপর নির্ভর করে এই আইডিটি আলাদা হতে পারে। বান্ডিলটি এখন সফলভাবে ইনস্টল করা হয়েছে, এবং এটি চালু করার কমান্ডটি নিম্নরূপ:
যে মুহুর্তে আপনি প্যাকেজটি চালু করবেন, "হ্যালো ওয়ার্ল্ড বাই জে" প্রদর্শিত হবে। আমরা এখন ব্যবহার করে বান্ডিলটি থামাতে এবং অপসারণ করতে পারি:
কনসোল "জয়ের দ্বারা বিদায় বিশ্ব" প্রদর্শন করে।
উপসংহার
OSGi ব্যবহার করে বিকাশকারীরা সহজেই একটি বিদ্যমান ওয়েব অ্যাপ্লিকেশনটিতে নতুন কার্যকারিতা যোগ করতে পারে এবং এটিকে সুরক্ষিত রাখে এবং মূল প্রোগ্রামের অন্যান্য উপাদান থেকে বিচ্ছিন্ন করে।
আমরা এই পোস্টে OSGi সম্পর্কে শিখেছি, এটি কীভাবে কাজ করে, এর সুবিধাগুলি এবং একটি সরল প্রোগ্রাম সহ। আপনার নিজের অ্যাপ্লিকেশনে OSGi অন্তর্ভুক্ত করা কঠিন নয়।
শুভ কোডিং!
নির্দেশিকা সমন্ধে মতামত দিন