Rumah  >  Artikel  >  Java  >  Apakah perubahan kepada pemuat kelas dalam Java 9?

Apakah perubahan kepada pemuat kelas dalam Java 9?

WBOY
WBOYke hadapan
2023-08-30 15:37:02697semak imbas

Java 9中的类加载器有哪些变化?

Semua program java dijalankan pada Java Virtual Machine (JVM). Selepas penyusunan, kelas java ditukar kepada platform dan kod bait bebas mesin dan kelas yang disusun disimpan sebagai .class#🎜.🎜 #dokumen. Setiap kali kita cuba menggunakannya, ClassLoader akan memuatkan kelas ke dalam ingatan. Kelas-kelas ini diperkenalkan ke dalam persekitaran Java apabila ia dirujuk dengan nama. Sebaik sahaja kelas mula berjalan, pemuatan kelas dilakukan oleh pemuat kelas, dan kaedah main() ialah salah satu cara untuk memulakan kelas.

Terdapat beberapa perubahan kecil pada pemuat kelas dalam Java 9: ​​​​

  • Pemuat kelas sistem tidak tersedia dalam Java 9 Wujud sekali lagi, ia adalah contoh >URLClassLoader, tetapi kelas dalaman. Ia ialah pemuat lalai untuk kelas dalam modul.
  • Extension ClassLoader telah dinamakan semula kepada Platform ClassLoader. Semua kelas dalam platform Java SE boleh dilihat melalui pemuat kelas platform, dan kelas yang berada dalam modul di bawah proses komuniti Java tetapi bukan sebahagian daripada platform Java SE juga boleh dilihat melalui pemuat kelas platform.
  • Application tidak boleh bergantung pada pemuat kelas yang mentakrifkan kelas platform mana Sesetengah kelas dalam platform Java SE ditakrifkan oleh pemuat kelas platform, manakala kelas lain Ia ditakrifkan oleh Pemuat kelas Bootstrap.
  • Jika pemuat kelas yang dicipta oleh kod sedia ada menggunakan pemuat kelas bootstrap sebagai pemuat kelas induk, maka kita perlu menukar Untuk menggunakan kelas platform pemuat sebagai pemuat kelas induk.
  • Pemuat Kelas Platform bukan contoh URLClassLoader, tetapi kelas dalaman.
  • Pemuat kelas but ialah > Pemuat kelas terbina dalam JVM . Walau bagaimanapun, ia mentakrifkan kelas untuk modul utama, seperti base. Aplikasi yang digunakan menggunakan -Xbootclasspath/a atau aplikasi yang menggunakan null sebagai ibu bapa mungkin perlu ditukar.
  • ul>Contoh

    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: " + <strong>ClassLoaderTest.class.</strong><strong>getClassLoader()</strong>);
          System.out.println("Classloader of Permission: " + <strong>java.sql.SQLPermission.class.</strong><strong>getClassLoader()</strong>);
          System.out.println("Classloader of LinkedList: " + <strong>java.util.LinkedList.class.</strong><strong>getClassLoader()</strong>);
          return;
       }
    }

    Output

    <strong>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</strong>

Atas ialah kandungan terperinci Apakah perubahan kepada pemuat kelas dalam Java 9?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam