OSGi की घटक प्रणाली आपको क्या लाभ प्रदान करती है?
खैर, यहाँ काफी एक सूची है:
कम जटिलता - OSGi तकनीक के साथ विकसित करने का मतलब है बंडल विकसित करना: OSGi घटक। बंडल मॉड्यूल हैं। वे अपने आंतरिक को अन्य बंडलों से छिपाते हैं और अच्छी तरह से परिभाषित सेवाओं के माध्यम से संवाद करते हैं। आंतरिक छिपाने का मतलब है कि बाद में बदलने की अधिक स्वतंत्रता। यह न केवल कीड़ों की संख्या को कम करता है, यह बंडलों को भी विकसित करने के लिए सरल बनाता है क्योंकि सही ढंग से आकार के बंडल अच्छी तरह से आंतरिक इंटरफेस के माध्यम से कार्यक्षमता का एक टुकड़ा लागू करते हैं। एक दिलचस्प ब्लॉग है जो बताता है कि OSGi तकनीक ने उनकी विकास प्रक्रिया के लिए क्या किया।
पुन: उपयोग - ओएसजीआई घटक मॉडल एक आवेदन में कई तीसरे पक्ष के घटकों का उपयोग करना बहुत आसान बनाता है। ओपन सोर्स प्रोजेक्ट्स की बढ़ती संख्या उनके JAR को OSGi के लिए तैयार प्रदान करती है। हालाँकि, तैयार किए गए बंडलों के रूप में व्यावसायिक पुस्तकालय भी उपलब्ध हो रहे हैं।
असली दुनिया -OSGi ढांचा गतिशील है। यह मक्खी पर बंडल अपडेट कर सकता है और सेवाएं आ और जा सकती हैं। अधिक पारंपरिक जावा के लिए उपयोग किए जाने वाले डेवलपर्स इसे एक बहुत ही समस्याग्रस्त विशेषता के रूप में देखते हैं और लाभ को देखने में विफल रहते हैं। हालांकि, यह पता चला है कि वास्तविक दुनिया अत्यधिक गतिशील है और गतिशील सेवाएं हैं जो आ सकती हैं और जा सकती हैं, जो कई वास्तविक दुनिया परिदृश्यों के लिए सेवाओं को एक आदर्श मैच बनाती हैं। उदाहरण के लिए, कोई सेवा नेटवर्क में डिवाइस को मॉडल कर सकती है। यदि डिवाइस का पता चला है, तो सेवा पंजीकृत है। यदि डिवाइस चला जाता है, तो सेवा अपंजीकृत है। इस गतिशील सेवा मॉडल से मेल खाने वाले वास्तविक विश्व परिदृश्यों की एक आश्चर्यजनक संख्या है। इसलिए अनुप्रयोग अपने स्वयं के डोमेन में सेवा रजिस्ट्री के शक्तिशाली प्राइमेटिव्स का पुनः उपयोग कर सकते हैं (रजिस्टर, प्राप्त करें, एक अभिव्यंजक फ़िल्टर भाषा के साथ सूची, और सेवाओं के प्रकट होने और गायब होने की प्रतीक्षा)। यह न केवल लेखन कोड को बचाता है, यह एक समर्पित समाधान के लिए वैश्विक दृश्यता, डिबगिंग टूल और अधिक कार्यक्षमता प्रदान करता है। ऐसे गतिशील वातावरण में कोड लिखना दुःस्वप्न की तरह लगता है, लेकिन सौभाग्य से, वहाँ समर्थन कक्षाएं और रूपरेखाएं हैं जो सबसे अधिक लेती हैं, यदि सभी नहीं, तो इसमें से दर्द।
आसान परिनियोजन - OSGi तकनीक केवल घटकों के लिए एक मानक नहीं है। यह भी निर्दिष्ट करता है कि घटकों को कैसे स्थापित और प्रबंधित किया जाता है। इस API का उपयोग प्रबंधन एजेंट प्रदान करने के लिए कई बंडलों द्वारा किया जाता है। यह प्रबंधन एजेंट कमांड शेल, टीआर -69 प्रबंधन प्रोटोकॉल ड्राइवर, ओएमए डीएम प्रोटोकॉल ड्राइवर, अमेज़ॅन के ईसी 2 के लिए क्लाउड कंप्यूटिंग इंटरफ़ेस या आईबीएम टिवोली प्रबंधन प्रणाली के रूप में सरल हो सकता है। मानकीकृत प्रबंधन एपीआई मौजूदा और भविष्य की प्रणालियों में ओएसजीआई प्रौद्योगिकी को एकीकृत करना बहुत आसान बनाता है।
डायनेमिक अपडेट्स - ओएसजीआई घटक मॉडल एक गतिशील मॉडल है। बंडलों को पूरे सिस्टम को नीचे लाए बिना स्थापित, शुरू, बंद, अद्यतन और अनइंस्टॉल किया जा सकता है। कई जावा डेवलपर्स का मानना है कि यह मज़बूती से किया जा सकता है और इसलिए शुरू में उत्पादन में इसका उपयोग न करें। हालांकि, कुछ समय के लिए विकास में इसका उपयोग करने के बाद, अधिकांश को यह महसूस करना शुरू हो जाता है कि यह वास्तव में काम करता है और तैनाती के समय को काफी कम कर देता है।
अनुकूली - ओएसजीआई घटक मॉडल को घटकों के मिश्रण और मिलान की अनुमति देने के लिए जमीन से डिज़ाइन किया गया है। इसके लिए आवश्यक है कि घटकों की निर्भरता को निर्दिष्ट करने की आवश्यकता है और इसके लिए ऐसे वातावरण में रहने के लिए घटकों की आवश्यकता होती है, जहाँ उनकी वैकल्पिक निर्भरताएँ हमेशा उपलब्ध न हों। OSGi सर्विस रजिस्ट्री एक डायनामिक रजिस्ट्री है जहाँ बंडल पंजीकरण कर सकते हैं, प्राप्त कर सकते हैं और सेवाओं को सुन सकते हैं। यह गतिशील सेवा मॉडल बंडल को यह पता लगाने की अनुमति देता है कि सिस्टम पर क्या क्षमताएं उपलब्ध हैं और वे जो कार्यक्षमता प्रदान कर सकते हैं उसे अनुकूलित करें। यह कोड को अधिक लचीला और परिवर्तनों के लिए लचीला बनाता है।
पारदर्शिता - बंडलों और सेवाओं OSGi वातावरण में प्रथम श्रेणी के नागरिक हैं। प्रबंधन एपीआई एक बंडल की आंतरिक स्थिति तक पहुंच प्रदान करता है और साथ ही साथ यह अन्य बंडलों से कैसे जुड़ा हुआ है। उदाहरण के लिए, अधिकांश ढांचे एक कमांड शेल प्रदान करते हैं जो इस आंतरिक स्थिति को दर्शाता है। अनुप्रयोगों के कुछ हिस्सों को एक निश्चित समस्या को डीबग करने के लिए रोका जा सकता है, या नैदानिक बंडलों को लाया जा सकता है। लॉगिंग आउटपुट और लंबे रिबूट समय की लाखों लाइनों को घूरने के बजाय, ओएसजीआई अनुप्रयोगों को अक्सर लाइव कमांड शेल के साथ डीबग किया जा सकता है।
वर्जनिंग - ओएसजीआई तकनीक जार नरक को हल करती है। JAR नर्क वह समस्या है जो पुस्तकालय A पुस्तकालय B के साथ काम करता है; संस्करण = 2, लेकिन पुस्तकालय C केवल B के साथ काम कर सकता है; संस्करण = 3। मानक जावा में, आप भाग्य से बाहर हैं। OSGi वातावरण में, सभी बंडलों को ध्यान से संस्करणित किया जाता है और केवल बंडलों जो सहयोग कर सकते हैं को एक ही वर्ग स्थान में एक साथ तार दिया जाता है। यह बंडल A और C दोनों को अपनी लाइब्रेरी के साथ कार्य करने की अनुमति देता है। हालांकि इस संस्करण के मुद्दे के साथ सिस्टम को डिजाइन करने की सलाह नहीं दी जाती है, लेकिन कुछ मामलों में यह जीवन रक्षक हो सकता है।
सरल - ओएसजीआई एपीआई आश्चर्यजनक रूप से सरल है। कोर एपीआई केवल एक पैकेज और 30 वर्गों / इंटरफेस से कम है। यह कोर एपीआई बंडलों को लिखने, उन्हें स्थापित करने, शुरू करने, बंद करने, अपडेट करने और उन्हें अनइंस्टॉल करने और सभी श्रोता और सुरक्षा वर्गों को शामिल करने के लिए पर्याप्त है। बहुत कम एपीआई हैं जो इतने कम एपीआई के लिए इतनी कार्यक्षमता प्रदान करते हैं।
छोटा - OSGi रिलीज़ 4 फ्रेमवर्क को लगभग 300KB JAR फ़ाइल में लागू किया जा सकता है। यह कार्यक्षमता की मात्रा के लिए एक छोटा ओवरहेड है जिसे OSGi सहित किसी एप्लिकेशन में जोड़ा जाता है। OSGi इसलिए उपकरणों की एक बड़ी रेंज पर चलता है: बहुत छोटे से, छोटे से लेकर मेनफ्रेम तक। यह केवल चलाने के लिए एक न्यूनतम जावा वीएम पूछता है और इसके शीर्ष पर बहुत कम जोड़ता है।
फास्ट - ओएसजीआई ढांचे की प्राथमिक जिम्मेदारियों में से एक बंडल से कक्षाएं लोड कर रहा है। पारंपरिक जावा में, जार पूरी तरह से दिखाई देते हैं और एक रैखिक सूची में रखे जाते हैं। किसी वर्ग को खोजने के लिए इसके माध्यम से खोज करने की आवश्यकता होती है (अक्सर बहुत लंबी, 150 असामान्य नहीं) सूची। इसके विपरीत, OSGi पूर्व-तारों को बंडल करता है और प्रत्येक बंडल के लिए जानता है कि कौन सा बंडल कक्षा प्रदान करता है। यह खोज की कमी स्टार्टअप पर एक महत्वपूर्ण गति कारक है।
आलसी - सॉफ्टवेयर में आलसी अच्छा है और OSGi तकनीक में चीजों को करने के लिए कई तंत्र हैं जब उन्हें वास्तव में जरूरत होती है। उदाहरण के लिए, बंडलों को उत्सुकता से शुरू किया जा सकता है, लेकिन उन्हें केवल तभी शुरू करने के लिए कॉन्फ़िगर किया जा सकता है जब अन्य बंडल उनका उपयोग कर रहे हैं। सेवाओं को पंजीकृत किया जा सकता है, लेकिन केवल तब बनाया जाता है जब उनका उपयोग किया जाता है। इस प्रकार के आलसी परिदृश्यों की अनुमति देने के लिए विनिर्देशों को कई बार अनुकूलित किया गया है जो जबरदस्त रनटाइम लागत को बचा सकते हैं।
सुरक्षित - जावा में नीचे की तरफ एक बहुत ही शक्तिशाली महीन सुरक्षा वाला मॉडल है लेकिन व्यवहार में इसे कॉन्फ़िगर करना बहुत कठिन है। परिणाम यह है कि अधिकांश सुरक्षित जावा एप्लिकेशन एक बाइनरी पसंद के साथ चल रहे हैं: कोई सुरक्षा या बहुत सीमित क्षमताएं नहीं। OSGi सुरक्षा मॉडल ठीक दाने वाले सुरक्षा मॉडल का लाभ उठाता है, लेकिन बंडल डेवलपर द्वारा आसानी से अंकेक्षित रूप में अनुरोध किए गए सुरक्षा विवरणों को निर्दिष्ट करते समय उपयोग योग्यता (साथ ही साथ मूल मॉडल को सख्त करने) में सुधार करता है जबकि पर्यावरण के संचालक पूरी तरह से चार्ज में रहते हैं। कुल मिलाकर, OSGi संभावना सबसे सुरक्षित अनुप्रयोग वातावरणों में से एक प्रदान करता है जो अभी भी हार्डवेयर संरक्षित कंप्यूटिंग प्लेटफ़ॉर्मों के उपयोग योग्य नहीं है।
गैर दखल देने वाले - OSGi वातावरण में अनुप्रयोग (बंडल) अपने स्वयं के लिए छोड़ दिए जाते हैं। वे OSGi को प्रतिबंधित किए बिना VM की किसी भी सुविधा का उपयोग कर सकते हैं। OSGi में सबसे अच्छा अभ्यास सादे पुराने जावा ऑब्जेक्ट को लिखना है और इस कारण से, OSGi सेवाओं के लिए कोई विशेष इंटरफ़ेस आवश्यक नहीं है, यहां तक कि एक जावा स्ट्रिंग ऑब्जेक्ट भी OSGi सेवा के रूप में कार्य कर सकता है। यह रणनीति दूसरे वातावरण में पोर्ट करने के लिए एप्लिकेशन कोड को आसान बनाती है।
हर जगह चलता है - ठीक है, यह निर्भर करता है। जावा का मूल लक्ष्य कहीं भी दौड़ना था। जाहिर है, सभी कोड को हर जगह चलाना संभव नहीं है क्योंकि जावा वीएम की क्षमताएं अलग-अलग हैं। एक मोबाइल फोन में एक वीएम संभवतः एक ही पुस्तकालयों का समर्थन नहीं करेगा, जो कि आईबीएम मेनफ्रेम बैंकिंग एप्लिकेशन चला रहा है। ध्यान रखने के लिए दो मुद्दे हैं। सबसे पहले, ओएसजीआई एपीआई को उन कक्षाओं का उपयोग नहीं करना चाहिए जो सभी वातावरणों पर उपलब्ध नहीं हैं। दूसरा, एक बंडल शुरू नहीं होना चाहिए यदि इसमें कोड शामिल है जो निष्पादन वातावरण में उपलब्ध नहीं है। इन दोनों मुद्दों का OSGi विनिर्देशों में ध्यान रखा गया है।
स्रोत: www.osgi.org/Technology/WhyOSGi