2012-05-31 22 views
7

का उपयोग क्या है हाल ही में मैं जावा कस्टम क्लास लोडर एपीआई में आया था। मुझे यहां एक उपयोग मिला, kamranzafar's blog मैं कक्षा लोडर अवधारणा के लिए थोड़ा नया हूं। क्या कोई विस्तार से समझा सकता है, विभिन्न परिदृश्य क्या हैं जहां हमें इसकी आवश्यकता हो सकती है या हमें इसका उपयोग करना चाहिए?कस्टम क्लास लोडर

+0

कस्टम क्लास लोडर लिखने के लिए अच्छा लेख। http://www.journaldev.com/349/java-classloader –

उत्तर

22

कस्टम क्लास लोडर बड़े आर्किटेक्चर में उपयोगी हैं जिनमें कई मॉड्यूल/एप्लिकेशन शामिल हैं। यहां कस्टम वर्ग लोडर के लाभ हैं:

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

कहीं से भी कक्षाओं को लोड करने का एक दिलचस्प (ठंडा?) उदाहरण यहां देखा जा सकता है: http://99-bottles-of-beer.net/language- जावा -1162.html – Crollster

+0

@ रमेश पीवीके आपके विवरण के लिए धन्यवाद। लेकिन यह वास्तव में सराहनीय है यदि आप जो कुछ वर्णन करते हैं उसे समझने के लिए आप कुछ उदाहरण कोड प्रदान कर सकते हैं। आशा है कि आप हमारे जैसे जावा में रुचि रखने वाले हमारे लिए ऐसा करेंगे। –

11

प्राथमिक उपयोग एप्लिकेशन सर्वर में है ताकि वे दो अनुप्रयोग चला सकें और कक्षाएं संघर्ष न करें। यानी यदि आवेदन 1 में कक्षा 2 के समान नाम वाला एक वर्ग है, तो कस्टम क्लास लोडर एप्लिकेशन 1 के साथ इसकी कक्षा लोड हो जाएगी और एप्लिकेशन 2 अपनी कक्षा लोड करेगा।

यदि कोई क्लास कस्टम क्लास लोडर द्वारा लोड किया जाता है तो उस वर्ग को JVM से अनलोड करना संभव है। एप्लिकेशन सर्वर में फिर से उपयोगी।

एक और उपयोग उपकरण के लिए होगा - पहलू उन्मुख प्रोग्रामिंग करने का एक तरीका या कुछ दृढ़ता API का उपयोग करते समय। एक कस्टम क्लासलोडर के साथ आप लोड किए गए वर्गों को चल रहे एप्लिकेशन से पहले पारित होने से पहले व्यवहार जोड़ सकते हैं।

2

जावा क्लास लोडर बहुत कुछ करते हैं जो नाम बताता है: कक्षाओं को स्मृति में लोड करें ताकि उनका उपयोग किया जा सके।

कक्षाएं क्लासलोडर से भी जुड़ी हुई हैं जो उन्हें लोड करती है।

  • लदान और उतराई कक्षाएं गतिशील (जैसे उदाहरण के लिए संभव संस्करण conficts हल करने)

    • अलग classloaders साथ एक ही कक्षा एक से अधिक संस्करण लोड हो रहा है:

      कस्टम वर्ग लोडर इसलिए दिलचस्प संभावनाओं की एक किस्म को खोलने रनटाइम पर

    • नई कक्षाएं उत्पन्न करना (उदा।Clojure तरह JVM भाषाओं विभिन्न classloading चालें का उपयोग नए संकलित वर्गों उत्पन्न करने के लिए गैर मानक सूत्रों

    सामान्य Java अनुप्रयोगों आमतौर पर classloaders बारे में चिंता करने की जरूरत नहीं है से कार्यावधि में Clojure कार्यों)

  • लोड हो रहा है वर्गों का प्रतिनिधित्व करने के लिए। लेकिन अगर आप एक फ्रेमवर्क या मंच लिख रहे हैं जिसे अन्य कोड होस्ट करने की आवश्यकता है तो वे अधिक महत्वपूर्ण/प्रासंगिक बन जाते हैं।

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