>Java >java지도 시간 >Java 9의 클래스 로더에 대한 변경 사항은 무엇입니까?

Java 9의 클래스 로더에 대한 변경 사항은 무엇입니까?

WBOY
WBOY앞으로
2023-08-30 15:37:02714검색

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

모든 Java 프로그램은 JVM(Java Virtual Machine)에서 실행됩니다. 컴파일 후 Java 클래스는 플랫폼머신 독립적인 바이트코드로 변환되며, 컴파일된 클래스는 .class 파일로 저장됩니다. 우리가 그것을 사용하려고 할 때마다 ClassLoader는 클래스를 메모리에 로드합니다. 이러한 클래스는 이름으로 참조될 때 Java 환경에 도입됩니다. 클래스가 실행되기 시작하면 클래스 로드는 클래스 로더에 의해 수행되며 main() 메서드는 클래스를 시작하는 한 가지 방법입니다.

Java 9의 클래스 로더에는 몇 가지 사소한 변경 사항이 있습니다. ​​

  • 시스템 클래스 로더 는 Java 9에 더 이상 존재하지 않으며 >URLClassLoader, 의 인스턴스이지만 내부 클래스입니다. 모듈의 클래스에 대한 기본 로더입니다.
  • 확장 클래스 로더의 이름이 플랫폼 클래스 로더로 변경되었습니다. Java SE 플랫폼의 모든 클래스는 플랫폼 클래스 로더를 통해 볼 수 있으며, Java 커뮤니티 프로세스 아래의 모듈에 있지만 Java SE 플랫폼의 일부가 아닌 클래스도 플랫폼 클래스 로더를 통해 볼 수 있습니다.
  • 애플리케이션 은 어떤 플랫폼 클래스를 정의하는 클래스 로더에 의존할 수 없으며, Java SE 플랫폼의 일부 클래스는 플랫폼 클래스 로더에 의해 정의되고 다른 클래스는 bootstrap 클래스 로더에 의해 정의됩니다. 기존 코드로 생성된 클래스 로더는 부트스트랩 클래스 로더를 상위 클래스 로더로 갖고 있으므로 플랫폼 클래스 로더를 상위 클래스 로더로 사용하도록 변경해야 합니다.
  • Platform ClassLoader
  • URLClassLoader의 인스턴스가 아니라 내부 클래스입니다.
  • Bootstrap 클래스 로더
  • >JVM에 내장된 클래스 로더입니다. 그러나 base와 같은 주요 모듈에 대한 클래스를 정의합니다. -Xbootclasspath/a를 사용하여 배포된 애플리케이션 또는 null 부모생성된 클래스 로더로 사용하는 애플리케이션을 변경해야 할 수도 있습니다.
  • 예 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;
       }
    }

    출력

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

위 내용은 Java 9의 클래스 로더에 대한 변경 사항은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제