Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा 9 में क्लास लोडर के परिवर्तन क्या हैं?

सभी जावा प्रोग्राम जावा वर्चुअल मशीन (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

  1. जावा में कंस्ट्रक्टर क्या हैं?

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

  1. जावा 9 में @Deprecated एनोटेशन के लिए क्या सुधार हैं?

    कोई भी तत्व जिसे @Deprecated से एनोटेट किया जा सकता है यह दर्शाता है कि इस विशेष तत्व का अब निम्न कारणों से उपयोग नहीं किया जाएगा इसका उपयोग करना जोखिम भरा है और इससे त्रुटियां हो सकती हैं। भविष्य के संस्करणों में असंगत हो सकता है। भविष्य के संस्करणों में हटाया जा सकता है। एक बेहतर और अधिक कुशल समा

  1. Java में Cursor क्लास का क्या महत्व है?

    A कर्सर ऑब्जेक्ट . का उपवर्ग है वर्ग और इसे बिंदु या संकेतक . के रूप में परिभाषित किया जा सकता है स्क्रीन पर। एक कर्सर सिस्टम से इनपुट का चयन करने के लिए प्रयोग किया जाता है जिसे उपयोगकर्ता माउस . के साथ संचालित करता है . कर्सर . में उपलब्ध विभिन्न प्रकार के कर्सर वर्ग हैं DEFAULT_CURSOR, CROSSH