तुमच्याकडे तुमचे सॉफ्टवेअर आधीपासून आहे, पण तरीही तुम्हाला तुमच्या तांत्रिक वापरकर्त्यांना प्लॅटफॉर्मचा विस्तार करण्यासाठी सक्षम करण्याच्या अधिक प्रभावी पद्धतीची आवश्यकता आहे.
जरी OSGi बर्याच जावा डेव्हलपरना सुप्रसिद्ध आहे, तरीही ते तुमच्या उत्पादनामध्ये समाकलित करणे कठीण काम वाटू शकते. OSGi च्या अचूक कार्याबद्दल स्पष्टतेचा अभाव पुढे जाण्याचा रस्ता आणखी गोंधळात टाकतो.
जे काही ते प्रयोग करू इच्छितात त्याउलट, OSGi ला अनेक जावा डेव्हलपर्सना विस्तीर्ण समुद्रात जाण्याचा प्रयत्न करण्यासारखे वाटते.
हा लेख तुम्हाला ओएसजीआय फेलिक्स स्प्रिंग ट्यूटोरियलचा एक सरळ प्रोग्राम वापरून परिचय करून देईल आणि त्याचे फायदे आणि इतर महत्त्वाच्या तपशीलांवर जा.
तर OSGi म्हणजे काय?
ओएसजीआय (ओपन सर्व्हिस गेटवे इनिशिएटिव्ह) म्हणून ओळखल्या जाणार्या जावा फ्रेमवर्कद्वारे मॉड्यूल आणि घटक तयार करणे आणि वितरित करणे शक्य झाले आहे.
हे फंक्शन एन्कॅप्स्युलेशन आणि लूज कपलिंगवर भर देते, जे डेव्हलपरना अनेक फायदे देते, ज्यामध्ये मॉड्यूलर कार्यक्षमतेचा समावेश आहे जो स्त्रोत कोड आणि चाचणी दरम्यान सहजपणे हस्तांतरणीय आहे ज्याला अनंत अवलंबनांची आवश्यकता नाही.
OSGi कसे कार्य करते?
Java साठी डायनॅमिक घटक प्रणाली OSGi नावाच्या वैशिष्ट्यांच्या संचाद्वारे परिभाषित केली जाते. हे चष्मा एक विकास दृष्टीकोन सक्षम करतात जेथे अनुप्रयोग अनेक भागांमधून तयार केला जातो आणि नंतर बंडलमध्ये पॅक केला जातो.
स्थानिक आणि नेटवर्क-आधारित सेवा या घटकांद्वारे संवाद साधण्यासाठी वापरल्या जातात. कार्यक्रमाचा कोर कोड शक्य तितका संक्षिप्त बनवणे हे उद्दिष्ट आहे. हा कोड आणि अनेक घटकांमधील उच्च कपलिंग शक्य आहे.
अनुप्रयोगाच्या पुन्हा वापरता येण्याजोग्या बिल्डिंग घटकांना घटक म्हणतात. तुमच्या ई-कॉमर्स वेबसाइटसाठी शॉपिंग कार्ट किंवा तुमच्या स्टाफ मॅनेजमेंट सिस्टमसाठी पेरोल अॅप्लिकेशन यासारख्या वैशिष्ट्यांचा विचार करा.
इतर घटकांपासून त्यांची अंमलबजावणी लपवण्यासाठी घटक OSGi वापरू शकतात आणि त्यांना फक्त सेवांद्वारे आवश्यक डेटा प्रदान करू शकतात.
हे घटकांना अनावधानाने डेटा बदलण्यापासून प्रतिबंधित करते ज्यामध्ये त्यांना प्रवेश नसावा आणि अवलंबित्व व्यवस्थापित केले जाते.
OSGi ऍप्लिकेशनमधील घटकांमधील सर्व कनेक्शन आदर्श जगात सेवांद्वारे केले जातात. Java पॅकेजमध्ये सेवांसाठी निर्दिष्ट केलेले API असते.
सेवा प्रदाते आणि ग्राहक यांच्यातील सहकार्यासाठी वर्ग आणि/किंवा इंटरफेस वापरणे आवश्यक आहे, जे API बनवतात.
सर्व OSGi घटक एकत्रितपणे बंडलमध्ये पॅक केले जातात, ज्यापैकी प्रत्येकामध्ये त्यांना कार्य करण्यासाठी आवश्यक असलेली संसाधने समाविष्ट असतात. बंडल त्यांना पर्यावरणापासून काय आवश्यक आहे आणि ते काय सक्षम आहेत याबद्दल अगदी स्पष्ट आहेत.
फायदे
- OSGi ऍप्लिकेशन्सना बाह्य बंडल रेपॉजिटरीजमध्ये प्रवेश असतो.
- फ्रेमवर्क मॉड्यूल स्तरावर सेवा-देणारं डिझाइनला अनुमती देते.
- हे तृतीय-पक्ष लायब्ररींचे मानकीकरण आणि समाकलित करणे सोपे करण्याव्यतिरिक्त अनुप्रयोग बंडलच्या आवृत्त्या आणि अवलंबित्व व्यवस्थापित करणे शक्य करते.
- ॲप्लिकेशन्स बदलत्या मागण्यांशी जुळवून घेणारे, अधिक पोर्टेबल आणि जलद अभियांत्रिकी आहेत.
- A वेब अनुप्रयोग जावा EE प्रोग्रामिंग मॉडेलसह फ्रेमवर्कच्या एकत्रीकरणामुळे डायनॅमिक लाइफटाईमसह आवृत्तीत OSGi बंडलचा समूह म्हणून तैनात केले जाऊ शकते.
- अनुप्रयोगाचा भाग म्हणून तृतीय-पक्ष लायब्ररी म्हणून स्थापित करण्याऐवजी, फ्रेमवर्क स्प्रिंग फ्रेमवर्कची घोषणात्मक असेंब्ली आणि सुव्यवस्थित युनिट चाचणी प्रदान करते जे ऍप्लिकेशन सर्व्हर रनटाइमचा भाग म्हणून प्रदान केले जाते.
- डायनॅमिक लाइफसायकलसह अनेक आवृत्त्यांचे बंडल बनवलेल्या कॉर्पोरेट अनुप्रयोगांसाठी, फ्रेमवर्क अलगाव ऑफर करते.
- यात एकात्मिक बंडल रेपॉजिटरी आहे जे अनेक ऍप्लिकेशन्सद्वारे वापरलेले सामायिक आणि व्हर्जन केलेले बंडल संचयित करू शकते, प्रत्येक ऍप्लिकेशनला प्रत्येक सामायिक लायब्ररीची एक वेगळी प्रत तैनात करण्यापासून प्रतिबंधित करते.
OSGi फेलिक्स स्प्रिंगसह प्रारंभ करत आहे
संसाधने मिळवणे
वरून Apache Karaf ची सर्वात अलीकडील आवृत्ती डाउनलोड करून ही साइट, आम्ही आमचे OSGi साहस सुरू करू शकतो.
Apache Felix वर आधारित, OSGi स्पेसिफिकेशनची Apache अंमलबजावणी, Apache Karaf OSGi-आधारित अनुप्रयोगांसाठी एक व्यासपीठ प्रदान करते.
Karaf फेलिक्सच्या वर विविध उपयुक्त वैशिष्ट्ये प्रदान करते जी आम्हाला OSGi सह परिचित होण्यास मदत करतील, जसे की कमांड लाइन इंटरफेस जो आम्हाला प्लॅटफॉर्मशी संवाद साधण्यास सक्षम करेल.
बंडलसाठी एंट्री पॉइंट
अनुप्रयोग OSGi वातावरणात चालवण्याआधी तो OSGi बंडल म्हणून पॅकेज केलेला असणे आवश्यक आहे. याव्यतिरिक्त, अनुप्रयोग प्रवेश बिंदू निर्दिष्ट करणे आवश्यक आहे; हे मानक सार्वजनिक स्थिर शून्य मुख्य(स्ट्रिंग[] आर्ग्स) फंक्शन नाही.
चला तर मग एक तयार करून सुरुवात करूयाहॅलो वर्ल्डOSGi वर आधारित अर्ज.
आम्ही मूलभूत OSGi API अवलंबित्व स्थापित करून सुरुवात करतो:
OSGi रनटाइमला अवलंबनामध्ये प्रवेश असेल, म्हणून बंडलमध्ये ते समाविष्ट करण्याची आवश्यकता नाही. म्हणून, ते पुरवठा केलेले म्हणून चिन्हांकित केले आहे.
आता सरळ HelloWorld क्लास तयार करूया:
बंडलसाठी एंट्री पॉइंट म्हणून काम करणाऱ्या वर्गांनी OSGi-प्रदान केलेले बंडलअॅक्टिव्हेटर इंटरफेस लागू करणे आवश्यक आहे.
जेव्हा हा वर्ग असलेले बंडल लॉन्च केले जाते, तेव्हा OSGi प्लॅटफॉर्म start() फंक्शनला कॉल करते. दुसऱ्या बाजूला, बंडल थांबवण्याआधी, फंक्शन stop() म्हणतात.
प्रत्येक बंडलमध्ये फक्त एक बंडलअॅक्टिव्हेटर असू शकतो हे विसरू नका. दिलेले BundleContext ऑब्जेक्ट वापरून दोन्ही मार्ग OSGi रनटाइमशी संवाद साधू शकतात.
बंडल तयार करणे
आवश्यक बदल करून pom.xml ला खरा OSGi बंडल बनवा.
आम्ही प्रथम स्पष्टपणे व्यक्त केले पाहिजे की आमचे ध्येय बंडल तयार करणे आहे.
त्यानंतर, Apache Felix समुदायाच्या सौजन्याने HelloWorld क्लासला OSGi बंडल म्हणून पॅकेज करण्यासाठी आम्ही maven-bundle-plugin वापरतो:
आम्ही बंडलच्या मॅनिफेस्ट फाइलमध्ये समाविष्ट करू इच्छित असलेल्या OSGi शीर्षलेखांची मूल्ये सूचना विभागात निर्दिष्ट केली आहेत.
बंडल-अॅक्टिव्हेटर हे बंडल अॅक्टिव्हेटर सोल्यूशनचे योग्यरित्या पात्र नाव आहे जे बंडल सुरू करण्यासाठी आणि बंद करण्यासाठी वापरले जाईल. हे नुकत्याच तयार केलेल्या वर्गाशी सुसंगत आहे.
हे OSGi शीर्षलेख नसताना, खाजगी-पॅकेज शीर्षलेख प्लगइनला पॅकेज बंडलमध्ये जोडण्याची सूचना देते परंतु ते इतर प्लगइनसाठी प्रवेशयोग्य बनवत नाही. mvn install कमांड बंडल तयार करण्यासाठी वापरावी.
बंडल स्थापित करणे आणि चालवणे
ही आज्ञा चालवून कराफ सुरू करूया:
जेथे "KARAF HOME" म्हणजे काराफ सेट अप केलेल्या फोल्डरचा संदर्भ आहे. जेव्हा काराफ कन्सोल प्रॉम्प्ट दिसेल तेव्हा आम्ही बंडल स्थापित करण्यासाठी खालील कमांड वापरू शकतो:
स्थानिक मावेन रेपॉजिटरी वापरणे म्हणजे काराफला बंडल लोड करण्यास सांगितले जाते.
बंडलचा अंकीय आयडी परत करून, काराफ ते लिहितो. यापूर्वी किती बंडल स्थापित केले आहेत त्यानुसार हा आयडी भिन्न असू शकतो. बंडल आता यशस्वीरित्या स्थापित केले गेले आहे आणि ते लॉन्च करण्याची आज्ञा खालीलप्रमाणे आहे:
ज्या क्षणी तुम्ही पॅकेज लाँच कराल, "Hello World by Jay" प्रदर्शित होईल. आम्ही आता वापरून बंडल थांबवू आणि काढू शकतो:
कन्सोल "Goodbye World by Jay" प्रदर्शित करते.
निष्कर्ष
OSGi चा वापर करून विकसक विद्यमान वेब ऍप्लिकेशनला सुरक्षित ठेवून आणि मुख्य प्रोग्रामच्या इतर घटकांपासून वेगळे ठेवताना त्यात नवीन कार्यक्षमता सहज जोडू शकतात.
आम्ही या पोस्टमध्ये OSGi बद्दल शिकलो, ते कसे कार्य करते, त्याचे फायदे आणि एक सरळ प्रोग्राम यासह. तुमच्या स्वतःच्या अर्जामध्ये OSGi समाविष्ट करणे कठीण नाही.
आनंदी कोडिंग!
प्रत्युत्तर द्या