Jelentkezés Telefonon: +36/30-820-1750ONLINE

Hírek

java classloader 예제

Kategória: Uncategorized

Java 클래스는 java.lang.ClassLoader의 인스턴스에 의해 로드됩니다. 그러나 클래스 로더는 클래스 자체입니다. 따라서 문제는 java.lang.ClassLoader 자체를 로드하는 사람입니다. Java 클래스는 한 번에 메모리에 로드되지 않지만 응용 프로그램에서 필요한 경우. 이 시점에서 Java 클래스 로더는 JRE에 의해 호출되고 이러한 클래스 로더는 클래스를 동적으로 메모리에 로드합니다. 이 공통 클래스를 만드는 방법에는 두 가지가 있습니다. 이렇게 하면 로드된 클래스와 사용자 지정 클래스 로더의 전체 이름 공간을 공유하지 않는 클래스에는 공통 클래스가 있습니다. 이 예제에서는 LocalModule이라는 인터페이스를 사용하지만 이 클래스를 쉽게 만들고 하위 클래스로 만들 수 있습니다. 원시 클래스 로더는 loadClass()의 기본 구현을 구현합니다. 따라서 이 코드는 클래스 이름 java.lang.Object가 클래스 경로의 어딘가에 자바/lang/Object.class가 있는 파일에 저장된다는 것을 이해합니다. 또한 이 코드는 클래스 경로 검색 및 클래스용 zip 파일을 모두 구현합니다. 이것이 디자인되는 방식에 대한 정말 멋진 점은 Java가 클래스 로더를 구현하는 함수 집합을 변경하여 클래스 저장소 모델을 변경할 수 있다는 것입니다. 간단한 예제를 사용하여 다양한 클래스 로더를 사용하여 다른 클래스가 로드되는 방법을 학습하여 시작해 보겠습니다: 이 예제에서는 Java 동적 클래스 로딩을 보여 드리며, 동적 Java 클래스 로딩은 Java 플랫폼을 제공하는 중요한 메커니즘입니다.

런타임에 소프트웨어 구성 요소를 설치할 수 있으므로 클래스를 필요에 따라 로드할 수 있는 마지막 순간에 원하는 방식으로 클래스를 로드할 수 있습니다. 예를 들어 JNDI에서 핵심 기능은 rt.jar의 부트스트랩 클래스에 의해 구현됩니다. 그러나 이러한 JNDI 클래스는 독립 공급업체에서 구현한 JNDI 공급자를 로드할 수 있습니다(응용 프로그램 클래스 경로에 배포). 이 시나리오에서는 부트스트랩 클래스 로더(상위 클래스 로더)가 응용 프로그램 로더(자식 클래스 로더)에 표시되는 클래스를 로드하도록 합니다. 앞에서 배운 것처럼 JVM의 클래스 로더는 모든 클래스 로더에 부트스트랩 클래스 로더를 제외한 단일 부모가 있도록 계층적 모델을 따릅니다. Java 클래스 로더는 Java 클래스를 Java 가상 머신에 동적으로 로드하는 Java 런타임 환경의 일부입니다. Java 런타임 시스템은 클래스 로더로 인해 파일 및 파일 시스템에 대해 알 필요가 없습니다. 초기 검사 후 간단한 클래스 로더가이 클래스의 구현을로드 할 수있는 기회를 얻는 위의 코드로 이동합니다. SimpleClassLoader에는 간단한 예제에서 디렉터리 “store”를 클래스 이름에 접두사로 지정하고 확장 “.impl”을 확장하는 getClassImplFromDataBase() 메서드가 있습니다. 원시 클래스 로더가 클래스를 찾는 데 의심의 여지가 없도록 예제에서이 기술을 선택했습니다. sun.applet.AppletClassLoader는 애플릿이 이름에 살고 있는 HTML 페이지에서 코드베이스 URL을 접두사로 지정한 다음 HTTPget 요청을 수행하여 바이트 코드를 가져옵니다.