सभी जावा प्रोग्राम जावा वर्चुअल मशीन (JVM) पर चलते हैं . संकलन के बाद, एक जावा वर्ग एक प्लेटफ़ॉर्म . में रूपांतरित हो जाता है और मशीन-स्वतंत्र बायटेकोड , और संकलित कक्षाएं .class . के रूप में संग्रहीत की जाती हैं फ़ाइलें। जब भी हम इसका उपयोग करने का प्रयास करते हैं, ClassLoader उस वर्ग को स्मृति में लोड करता है। नाम से संदर्भित होने पर कक्षाओं को जावा वातावरण में पेश किया जाता है। क्लास के चलने के बाद, क्लास लोडर द्वारा क्लास लोड किया गया है, और main() विधि उस वर्ग को शुरू करने का एक तरीका है।
Java 9 में क्लास लोडर में कुछ मामूली बदलाव हैं:
- सिस्टम क्लास लोडर जावा 9 में नहीं है, URLClassLoader, . का एक उदाहरण बल्कि यह एक आंतरिक वर्ग है। यह डिफ़ॉल्ट लोडर . है मॉड्यूल में कक्षाओं के लिए।
- द एक्सटेंशन क्लास लोडर का नाम बदलकर प्लेटफ़ॉर्म क्लास लोडर . कर दिया गया है . जावा एसई प्लेटफॉर्म में सभी वर्ग प्लेटफॉर्म क्लास लोडर के माध्यम से और जावा समुदाय प्रक्रिया के तहत मॉड्यूल में कक्षाओं को भी देखा जा सकता है, लेकिन जावा एसई प्लेटफॉर्म का हिस्सा नहीं है जो प्लेटफॉर्म क्लास लोडर के माध्यम से भी दिखाई देता है।
- अनुप्रयोग क्लास लोडर पर निर्भर नहीं हो सकता है जो परिभाषित करता है कि जावा एसई प्लेटफॉर्म में कुछ क्लास के प्लेटफॉर्म क्लास को प्लेटफॉर्म क्लास लोडर द्वारा परिभाषित किया गया है, जबकि अन्य को बूटस्ट्रैप क्लास लोडर द्वारा परिभाषित किया गया है। ।
- यदि मौजूदा कोड बूटस्ट्रैप क्लास लोडर के साथ एक क्लास लोडर को पैरेंट क्लास लोडर के रूप में बनाता है, तो हमें प्लेटफ़ॉर्म क्लास लोडर को पैरेंट के रूप में उपयोग करने के लिए बदलने की आवश्यकता है।
- द प्लेटफ़ॉर्म क्लास लोडर URLClassLoader का उदाहरण नहीं है , बल्कि यह एक आंतरिक वर्ग है।
- बूटस्ट्रैप क्लास लोडर एक अंतर्निहित क्लास लोडर . है जेवीएम की। हालांकि, यह महत्वपूर्ण मॉड्यूल जैसे आधार . के वर्गों को परिभाषित करता है . -Xbootclasspath/a . के साथ परिनियोजित अनुप्रयोग या शून्य . के साथ क्लास लोडर बनाएं एक अभिभावक . के रूप में बदलने की आवश्यकता हो सकती है।
उदाहरण
public class ClassLoaderTest { public static void main(String args[]) { System.out.println("Class Loader Test"); ClassLoaderTest test = new ClassLoaderTest(); try { test.showClassLoaders(); } catch(ClassNotFoundException cnfe) { System.out.println(cnfe.getMessage()); } } public void showClassLoaders() throws ClassNotFoundException { System.out.println("Classloader of this class: " + ClassLoaderTest.class.getClassLoader()); System.out.println("Classloader of Permission: " + java.sql.SQLPermission.class.getClassLoader()); System.out.println("Classloader of LinkedList: " + java.util.LinkedList.class.getClassLoader()); return; } }
आउटपुट
Class Loader Test Classloader of this class: jdk.internal.loader.ClassLoaders$AppClassLoader@504bae78 Classloader of Permission: jdk.internal.loader.ClassLoaders$PlatformClassLoader@299a06ac Classloader of LinkedList: null