2013-11-28 5 views
5

मैंने हाल ही में OSGi का अध्ययन करना शुरू कर दिया है। मैंने पढ़ा है कि कोई bundles(which are normal java classes) बना सकता है और dynamically installing/uninstalling किसी भी बंडल द्वारा उन्हें अन्य बंडल में उपयोग कर सकता है।ओएसजीआई बंडल और सामान्य के बीच अंतर। जेएआर फाइलों का उपयोग

लेकिन मुझे किसी भी जावा क्लास में bundle के उपयोग के बीच सामान्य .JAR फ़ाइल उपयोग के बीच अंतर को समझ में नहीं आता है।

क्या कोई मुझे इसे स्पष्ट करने में मदद कर सकता है? धन्यवाद।

उत्तर

16

मूल रूप से कोई अंतर नहीं है। एक जार एक बंडल है और एक बंडल एक जार है, प्रारूप समान हैं। हालांकि, उपयोगी बंडल को इसके मैनिफेस्ट में ओएसजीआई मेटाडेटा की आवश्यकता होती है ताकि एक ओएसजीआई फ्रेमवर्क बंडलों के बीच कक्षाओं की दृश्यता का प्रबंधन कर सके। इस मेटाडाटा के बिना एक जार में केवल अदृश्य कक्षाएं होंगी, अन्य बंडलों से कोई भी वर्ग नहीं देख सका, और न ही यह किसी भी तरह से शुरू हो सकता है। आयात-पैकेज मेनिफेस्ट हेडर बताता है कि बंडल को कौन से पैकेज दिखाना चाहिए, और निर्यात-पैकेज बंडल में संकुल को परिभाषित करता है जिसे दूसरों के लिए दृश्यमान किया जाना चाहिए। अन्य शीर्षलेख अतिरिक्त सुविधाएं प्रदान करते हैं।

पारंपरिक वर्ग पथ के साथ सब कुछ साझा और वैश्विक है, कक्षा वर्ग पर एक ही कक्षा को कहीं भी चिह्नित नहीं किया जाता है, किसी को केवल अनदेखा किया जाता है। ओएसजीआई के साथ महत्वपूर्ण अंतर यह है कि एक जेएआर अब सभी निजी है, मैनिफेस्ट में मेटाडेटा इसे एक बंडल बनाता है जो सुरक्षित रूप से अन्य बंडलों के साथ साझा कर सकता है। ओएसजीआई सुनिश्चित करता है कि समय से पहले उल्लंघन का पता चला है।

+0

साफ़ करें। धन्यवाद :) – Amrit

+0

तो, जावाईई एप्लिकेशन में एक जार के स्थान पर एक बंडल का उपयोग किया जा सकता है? – adbdkb

+1

हाँ, यह एक सामान्य जार है। हालांकि, एक जावाईई ऐप में यह निश्चित रूप से एक जार के रूप में कार्य करेगा और बंडल के रूप में नहीं। –

संबंधित मुद्दे