Maison  >  Article  >  Java  >  Quelles sont les modifications apportées aux chargeurs de classes dans Java 9 ?

Quelles sont les modifications apportées aux chargeurs de classes dans Java 9 ?

WBOY
WBOYavant
2023-08-30 15:37:02672parcourir

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

Tous les programmes Java fonctionnent sur Java Virtual Machine (JVM). Après la compilation, les classes Java sont converties en platform et bytecode indépendant de la machine, et les classes compilées sont stockées sous forme de fichiers .class. Chaque fois que nous essayons de l'utiliser, ClassLoader chargera la classe en mémoire. Ces classes sont introduites dans l'environnement Java lorsqu'elles sont référencées par leur nom. Une fois qu'une classe commence à s'exécuter, le chargement de la classe est effectué par le chargeur de classe, et la méthode main() est un moyen de démarrer la classe.

Il y a quelques changements mineurs dans les chargeurs de classes dans Java 9 : ​​

  • Le chargeur de classes système n'existe plus dans Java 9, c'est une instance de >URLClassLoader, mais une classe interne. C'est le chargeur par défaut pour les cours en modules.
  • Extension Class Loader a été renommé Platform Class Loader. Toutes les classes de la plateforme Java SE sont visibles via le chargeur de classes de plateforme, et les classes qui se trouvent dans des modules sous le processus de communauté Java mais ne font pas partie de la plateforme Java SE sont également visibles via le chargeur de classes de plateforme.
  • Une application ne peut pas dépendre du chargeur de classe qui définit quelle classe de plate-forme, certaines classes de la plate-forme Java SE sont définies par le chargeur de classe de plate-forme, tandis que d'autres classes sont définies par le chargeur de classe bootstrapSi le. Le chargeur de classe créé par le code existant a le chargeur de classe d'amorçage comme chargeur de classe parent, nous devons alors modifier pour utiliser le chargeur de classe de plate-forme comme chargeur de classe parent.
  • Platform ClassLoader
  • n'est pas une instance de URLClassLoader, mais une classe interne.
  • Bootstrap Class Loader
  • est un >chargeur de classe intégré à la JVM. Cependant, il définit des classes pour les modules clés, tels que base. Les applications déployées avec -Xbootclasspath/a ou les applications qui utilisent null comme parent pour créer un chargeur de classe devront peut-être être modifiées.
  • Exemple ul>
    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;
       }
    }

    Sortie

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer