2008-09-17 14 views
5

मैं एक जे 2 एसई डेस्कटॉप एप्लीकेशन लिख रहा हूं जिसके लिए इसके घटकों में से एक को प्लग करने योग्य होना आवश्यक है। मैंने इस प्लगइन के लिए जावा इंटरफेस को पहले ही परिभाषित कर दिया है। उपयोगकर्ता रनटाइम (जीयूआई के माध्यम से) पर चयन करने में सक्षम होना चाहिए जो इस इंटरफेस का कार्यान्वयन करना चाहते हैं (उदाहरण के लिए प्रारंभिक संवाद में)। मैं प्रत्येक प्लगइन को एक जेएआर फ़ाइल के रूप में पैक किया जा रहा है जिसमें कार्यान्वयन वर्ग और किसी भी सहायक वर्ग की आवश्यकता हो सकती है।जे 2 एसई अनुप्रयोग में प्लगइन समर्थन जोड़ने के लिए सर्वश्रेष्ठ तकनीक?

डेस्कटॉप जावा ऐप में इस प्रकार की चीज़ करने के लिए सबसे अच्छी तकनीक क्या है?

+0

जेएसपीएफ आपके लिए कैसे काम करता है? मैंने फीडबैक के लिए एक थ्रेड बनाया: http://stackoverflow.com/questions/1613935/ –

+0

मैंने अभी तक इसका उपयोग नहीं किया है, लेकिन एक बार ऐसा करने के बाद यहां पोस्ट किया जाएगा। –

उत्तर

5

प्लगइन-आधारित जावा आर्किटेक्चर के लिए कई प्रयासों के बाद (जो आपको लगता है कि ठीक है), अंत में मुझे जावा 5 कोड के लिए सबसे अच्छा समाधान होने के लिए JSPF मिला। इसमें ओएसजीआई की समाधान की तरह बड़ी जरूरत नहीं है, बल्कि इसका उपयोग करना आसान है।

+0

मैं प्रोजेक्ट साइट पर गया और डेमो वीडियो देखा; जेएसपीएफ का उपयोग करना बहुत आसान लगता है और वास्तव में मैं क्या चाहता हूं! बहुत बहुत धन्यवाद। –

0

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

मैं भी रिचर्ड डेडमैन द्वारा this article मिला, लेकिन यह एक छोटे से (2006?) दिनांक लग रहा है और न OSGi (कम से कम नाम से नहीं) है और न ही java.util.jar पैकेज

0

आप OSGi एक प्लगइन के रूप में प्रयोग के बारे में सोच किया उल्लेख ढांचा? ओएसजीआई के साथ आप मांग पर अपने मॉड्यूल को अपडेट/प्रतिस्थापित, लोड या अनलोड कर सकते हैं।

+0

हां! एक मिनट से आपको मारो! परन्तु गंभीरता से; क्या आपने इसे स्वयं किया है, या मेरे जैसा, क्या ऐसा कुछ है जो आपको लगता है * काम करना चाहिए? –

1

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

दूसरी तरफ ओएसजीआई आपके पूरे आवेदन को ढांचे के साधन प्रदान करता है। यदि आपके पास पहले से एक बड़ा डेस्कटॉप एप्लिकेशन है जिसे एक भाग प्लग करने योग्य की आवश्यकता है, तो यह एक सीधी सीखने की वक्र होगी। यदि आप डेस्कटॉप ऐप के साथ रिक्त प्रारंभ करते हैं, तो ओएसजीआई पूरे एप्लिकेशन को मॉड्यूलर करने का माध्यम प्रदान करता है। यह "घटकों के अलगाव" और मॉड्यूल की आजादी के बारे में है।

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

2

ओएसजीआई निश्चित रूप से जाने का एक वैध तरीका है। लेकिन, यह मानते हुए कि आपको प्लगइन को पुनः लोड करने के लिए अनलोड करने की आवश्यकता नहीं है, यह अखरोट को तोड़ने के लिए हथौड़ा का उपयोग कर सकता है।

आप अपने jins फ़ाइल में प्रत्येक जेएआर फ़ाइल को स्कैन करने के लिए 'java.util.jar' में कक्षाओं का उपयोग कर सकते हैं और फिर सही में लोड करने के लिए 'java.net.URLClassLoader' का उपयोग कर सकते हैं।

+0

अच्छा लगता है, मैं कोशिश करूँगा। चीयर्स। –

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