तपाइँसँग पहिले नै तपाइँको सफ्टवेयर ठाउँमा छ, तर तपाइँलाई अझै पनि तपाइँको प्राविधिक प्रयोगकर्ताहरूलाई प्लेटफर्म विस्तार गर्न सक्षम पार्न अझ प्रभावकारी विधि चाहिन्छ।
यद्यपि OSGi धेरै जाभा विकासकर्ताहरूलाई राम्रोसँग परिचित छ, यसलाई तपाइँको उत्पादनमा एकीकृत गर्नु एक चुनौतीपूर्ण कार्य जस्तो लाग्न सक्छ। OSGi को सटीक कामको बारेमा स्पष्टताको अभावले अगाडिको बाटोलाई अस्तव्यस्त बनाउँछ।
तिनीहरूले प्रयोग गर्न चाहेको कुनै पनि कुराको विपरित, OSGi ले धेरै जाभा विकासकर्ताहरूलाई फराकिलो समुद्रमा यात्रा गर्ने प्रयास गरेको जस्तो लाग्छ।
यस लेखले तपाइँलाई OSGi फेलिक्स वसन्त ट्यूटोरियलमा एक सीधा कार्यक्रम प्रयोग गरेर परिचय गराउनेछ र यसको फाइदाहरू, र अन्य महत्त्वपूर्ण विवरणहरू मार्फत जानुहोस्।
त्यसैले OSGi के हो?
मोड्युल र कम्पोनेन्टहरू सिर्जना र वितरण गर्न OSGi (ओपन सर्भिस गेटवे इनिसिएटिभ) भनेर चिनिने जाभा फ्रेमवर्कद्वारा सम्भव भएको हो।
यसले फंक्शन इनक्याप्सुलेशन र लूज कपलिङमा जोड दिन्छ, जसले विकासकर्ताहरूलाई धेरै फाइदाहरू प्रदान गर्दछ, मोड्युलर कार्यक्षमता सहित जुन स्रोत कोडहरू र परीक्षणहरू बीच सजिलै स्थानान्तरणयोग्य हुन्छ जुन अनन्त निर्भरताहरू आवश्यक पर्दैन।
OSGi कसरी काम गर्छ?
जाभाको लागि एक गतिशील घटक प्रणाली OSGi भनिन्छ निर्दिष्टीकरणहरूको सेट द्वारा परिभाषित गरिएको छ। यी चश्माहरूले विकास दृष्टिकोण सक्षम गर्दछ जहाँ एप्लिकेसन धेरै भागहरूबाट बनाइन्छ र त्यसपछि बन्डलहरूमा प्याकेज गरिन्छ।
स्थानीय र नेटवर्क-आधारित सेवाहरू संचार गर्न यी घटकहरू द्वारा प्रयोग गरिन्छ। कार्यक्रमको कोर कोडलाई सम्भव भएसम्म कम्प्याक्ट बनाउने उद्देश्य हो। यो कोड र धेरै कम्पोनेन्टहरू बीच उच्च युग्मन सम्भव छ।
एप्लिकेसनको पुन: प्रयोज्य निर्माण तत्वहरूलाई कम्पोनेन्ट भनिन्छ। तपाईंको ई-वाणिज्य वेबसाइटको लागि किनमेल कार्ट वा तपाईंको कर्मचारी व्यवस्थापन प्रणालीको लागि पेरोल अनुप्रयोग जस्ता सुविधाहरू बारे सोच्नुहोस्।
कम्पोनेन्टहरूले OSGi प्रयोग गर्न सक्छन् आफ्नो कार्यान्वयनलाई अन्य कम्पोनेन्टहरूबाट लुकाउन र सेवाहरू मार्फत उनीहरूलाई आवश्यक डाटा मात्र प्रदान गर्न।
यसले कम्पोनेन्टहरूलाई अनजानमा डेटा परिवर्तन गर्नबाट रोक्छ तिनीहरूसँग पहुँच नहुनु पर्छ र निर्भरताहरू व्यवस्थापन गर्दछ।
OSGi अनुप्रयोगमा कम्पोनेन्टहरू बीचको सबै जडानहरू एक आदर्श संसारमा सेवाहरू मार्फत बनाइन्छ। Java प्याकेजले सेवाहरूको लागि निर्दिष्ट गरिएको API समावेश गर्दछ।
सेवा प्रदायकहरू र ग्राहकहरू बीचको सहकार्यलाई एपीआई बनाउने कक्षाहरू र/वा इन्टरफेसहरूको प्रयोग आवश्यक छ।
सबै OSGi कम्पोनेन्टहरू बन्डलहरूमा सँगै प्याकेज गरिएका छन्, जसमध्ये प्रत्येकले काम गर्न आवश्यक पर्ने स्रोतहरू समावेश गर्दछ। बन्डलहरू उनीहरूलाई वातावरणबाट के चाहिन्छ र तिनीहरू के गर्न सक्षम छन् भन्ने बारे एकदम स्पष्ट छन्।
लाभ
- OSGi अनुप्रयोगहरूसँग बाह्य बन्डल भण्डारहरूमा पहुँच छ।
- फ्रेमवर्कले मोड्युल स्तरमा सेवा-उन्मुख डिजाइनलाई अनुमति दिन्छ।
- यसले मानकीकरण र तेस्रो-पक्ष पुस्तकालयहरूलाई एकीकृत गर्न सजिलो बनाउनका साथै अनुप्रयोग बन्डलहरूको संस्करणहरू र निर्भरताहरू व्यवस्थापन गर्न सम्भव बनाउँछ।
- एप्लिकेसनहरू मागहरू परिवर्तन गर्न थप अनुकूलनीय छन्, थप पोर्टेबल, र पुन: इन्जिनियर गर्न छिटो।
- A वेब अनुप्रयोग जाभा EE प्रोग्रामिङ मोडेलसँग फ्रेमवर्कको एकीकरणको लागि गतिशील जीवनकालको साथ संस्करण गरिएको OSGi बन्डलहरूको समूहको रूपमा तैनात गर्न सकिन्छ।
- एप्लिकेसनको भागको रूपमा तेस्रो-पक्ष पुस्तकालयको रूपमा स्थापना गर्नुको सट्टा, ढाँचाले एप्लिकेसन सर्भर रनटाइमको अंशको रूपमा प्रदान गरिएको मानकीकृत फारममा वसन्त फ्रेमवर्कको घोषणात्मक असेंबली र सुव्यवस्थित इकाई परीक्षण प्रदान गर्दछ।
- गतिशील जीवनचक्रका साथ धेरै संस्करण भएका बन्डलहरू मिलेर बनेका कर्पोरेट अनुप्रयोगहरूको लागि, फ्रेमवर्कले अलगाव प्रदान गर्दछ।
- यसले एक एकीकृत बन्डल रिपोजिटरी समावेश गर्दछ जसले धेरै अनुप्रयोगहरूद्वारा प्रयोग गरिएका साझा साझा र संस्करण गरिएका बन्डलहरू भण्डारण गर्न सक्छ, प्रत्येक अनुप्रयोगलाई प्रत्येक साझा पुस्तकालयको छुट्टै प्रतिलिपि प्रयोग गर्नबाट रोक्छ।
OSGi फेलिक्स वसन्तको साथ सुरू गर्दै
स्रोतहरू प्राप्त गर्दै
बाट Apache Karaf को सबैभन्दा भर्खरको संस्करण डाउनलोड गरेर यो साइट, हामी हाम्रो OSGi साहसिक सुरु गर्न सक्छौं।
Apache Felix मा आधारित, OSGi विशिष्टताको Apache कार्यान्वयन, Apache Karaf ले OSGi-आधारित अनुप्रयोगहरूको लागि प्लेटफर्म प्रदान गर्दछ।
काराफले फेलिक्सको शीर्षमा विभिन्न उपयोगी सुविधाहरू प्रदान गर्दछ जसले हामीलाई OSGi सँग परिचित गराउन मद्दत गर्दछ, जस्तै कमाण्ड लाइन इन्टरफेस जसले हामीलाई प्लेटफर्मसँग सञ्चार गर्न सक्षम गर्दछ।
बन्डलहरूको लागि प्रवेश बिन्दु
OSGi वातावरणमा चलाउन सक्नु अघि एउटा अनुप्रयोगलाई OSGi बन्डलको रूपमा प्याकेज गर्नुपर्छ। थप रूपमा, आवेदन प्रविष्टि बिन्दु निर्दिष्ट हुनुपर्छ; यो मानक सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिङ[] args) प्रकार्य होइन।
त्यसोभए एउटा सिर्जना गरेर सुरु गरौं "नमस्ते संसार"ओएसजीआईमा आधारित अनुप्रयोग।
हामी आधारभूत OSGi API निर्भरता स्थापना गरेर सुरु गर्छौं:
OSGi रनटाइममा निर्भरतामा पहुँच हुनेछ, त्यसैले बन्डलले यसलाई समावेश गर्न आवश्यक छैन। त्यसकारण, यो आपूर्ति गरिएको रूपमा चिन्ह लगाइएको छ।
अब सीधा HelloWorld वर्ग सिर्जना गरौं:
बन्डलहरूको लागि प्रविष्टि बिन्दुको रूपमा कार्य गर्ने कक्षाहरूले OSGi-प्रदान गरिएको BundleActivator इन्टरफेस लागू गर्नुपर्छ।
जब यो वर्ग भएको बन्डल सुरु हुन्छ, OSGi प्लेटफर्मले start() प्रकार्यलाई कल गर्छ। अर्को छेउमा, बन्डल रोकिएको केही समय अघि, प्रकार्य stop() भनिन्छ।
नबिर्सनुहोस् कि प्रत्येक बन्डलमा केवल एक बन्डल एक्टिभेटर हुन सक्छ। दुबै तरिकाले दिइएको BundleContext वस्तु प्रयोग गरेर OSGi रनटाइमसँग सञ्चार गर्न सक्छ।
बन्डल सिर्जना गर्दै
आवश्यक परिवर्तनहरू गरेर pom.xml लाई वास्तविक OSGi बन्डल बनाउनुहोस्।
हामीले पहिले स्पष्ट रूपमा व्यक्त गर्नुपर्छ कि हाम्रो लक्ष्य बन्डल उत्पादन गर्नु हो।
त्यसपछि, हामी हेलोवर्ल्ड क्लासलाई OSGi बन्डलको रूपमा प्याकेज गर्न maven-bundle-plugin प्रयोग गर्छौं, Apache Felix समुदायको सौजन्य:
हामीले बन्डलको MANIFEST फाइलमा समावेश गर्न चाहेका OSGi हेडरहरूको मान निर्देशन खण्डमा निर्दिष्ट गरिएको छ।
Bundle-Activator वास्तवमा BundleActivator समाधानको उचित रूपमा योग्य नाम हो जुन बन्डल सुरु गर्न र बन्द गर्न प्रयोग गरिनेछ। यो भर्खरै सिर्जना गरिएको वर्गसँग उपयुक्त छ।
जबकि यो OSGi हेडर होइन, निजी-प्याकेज हेडरले प्लगइनलाई प्याकेजलाई बन्डलमा थप्न निर्देशन दिन्छ तर यसलाई अन्य प्लगइनहरूमा पहुँचयोग्य बनाउँदैन। mvn install आदेश बन्डल सिर्जना गर्न प्रयोग गरिनु पर्छ।
बन्डल स्थापना र चलाउँदै
यो आदेश चलाएर Karaf सुरु गरौं:
जहाँ "KARAF HOME" ले काराफ सेटअप भएको फोल्डरलाई जनाउँछ। काराफ कन्सोल प्रम्प्ट देखा पर्दा हामी बन्डल स्थापना गर्न निम्न आदेश प्रयोग गर्न सक्छौं:
स्थानीय माभेन रिपोजिटरी प्रयोग गरेर Karaf लाई बन्डल लोड गर्न भनिएको छ।
बन्डलको संख्यात्मक आईडी फिर्ता गर्दै, काराफले यसलाई लेख्छन्। यो ID पहिले कतिवटा बन्डलहरू स्थापना गरिसकेका छन् भन्ने आधारमा फरक हुन सक्छ। बन्डल अब सफलतापूर्वक स्थापना गरिएको छ, र यसलाई सुरु गर्न आदेश निम्नानुसार छ:
तपाईंले प्याकेज सुरु गर्ने क्षण, "हेलो वर्ल्ड बाई जे" डिस्प्ले हुन्छ। अब हामी यो प्रयोग गरेर बन्डल रोक्न र हटाउन सक्छौं:
कन्सोलले "Jay द्वारा अलविदा संसार" देखाउँछ।
निष्कर्ष
विकासकर्ताहरूले OSGi प्रयोग गरेर यसलाई सुरक्षित राखेर र मुख्य कार्यक्रमका अन्य कम्पोनेन्टहरूबाट अलग राख्दा अवस्थित वेब अनुप्रयोगमा सजिलैसँग नयाँ कार्यक्षमता थप्न सक्छन्।
हामीले यो पोष्टमा OSGi को बारेमा सिकेका छौं, यसले कसरी कार्य गर्दछ, यसको फाइदाहरू, र एक सीधा कार्यक्रम सहित। OSGi लाई तपाईंको आफ्नै अनुप्रयोगमा समावेश गर्न गाह्रो छैन।
खुशीयाली कोडिंग!
जवाफ छाड्नुस्