2024/12/23 3

[JVM 밑바닥까지 파헤치기] 7-3. 클래스 로딩 매커니즘: 자바 모듈 시스템

저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다1. JPMSJava 9에서 도입된 모듈 시스템항목설명목적모듈 단위의 캡슐화, 격리, 의존성 명시를 통해 기존 클래스패스 구조의 불안정성 해결기존 대비 차이점클래스패스는 런타임 의존성 오류 발생 가능 → JPMS는 컴파일 타임 의존성 체크핵심 파일module-info.java (모듈 경계와 공개 범위 정의)호환성기존 클래스패스와 병행 사용 가능 (--module-path vs --class-path) module-info.java키워드설명requires다른 모듈을 참조(의존)exports모듈 내부 패키지를 외부에 공개uses서비스 인터페이스 사용 명시 (e.g. ServiceLoader)providesuses 대상 인터페이스의 구현체 ..

Java 2024.12.23

[JVM 밑바닥까지 파헤치기] 7-2. 클래스 로딩 매커니즘: 클래스 로더

저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다 가상 머신 외부에서 다양한 방식으로 바이트 스트림을 로드하도록 하는 방법 1. 클래스 동치 조건같은 클래스 로더로 로딩되어야 동치 관계의 클래스라 판단함서로 다른 클래스 로더로 같은 .class를 로드하면 완전히 다른 타입으로 취급됨 2. 부모 위임 모델특징설명위임 순서상위 클래스 로더에게 먼저 위임, 실패하면 자기 자신이 로드 시도이점핵심 Java API 중복 로딩 방지, 보안성 향상접근 제한🔹 자식 → 부모 접근 가능🔹 부모 → 자식 접근 불가 3. 주요 클래스 로더 구조클래스 로더설명부트스트랩 클래스 로더JVM 내장JDK 기본 클래스 로딩 (JAVA_HOME/lib 또는 -Xbootclasspath)확장 클래스 로더lib/e..

Java 2024.12.23

[JVM 밑바닥까지 파헤치기] 7-1. 클래스 로딩 매커니즘: 클래스 로딩 처리 과정

저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다 0. 동적 로딩런타임에서 클래스가 필요할 때 클래스가 jvm에 동적으로 로드되는 방식런타임에 클래스 로딩 → 링킹 → 초기화가 순차적으로 수행됨 장점항목설명확장성필요할 때만 클래스를 로딩 → 모듈화 및 유연한 설계 가능유연성특정 클래스나 기능을 런타임 중에 교체/추가 가능외부 소스 로딩네트워크/파일시스템 등에서 외부 .class를 로드할 수 있음런타임 바인딩컴파일 타임이 아닌 실행 시 클래스 결정 가능 → 플러그인 구조에 유리 단점성능 떨어짐 1. Loading클래스의 바이트코드를 읽어와 JVM 메모리에 로드하는 단계바이트 스트림을 런타임 데이터 구조로 변환해 메서드 영역에 저장하고, Heap에 Class 객체 생성 특징항목설명클래스..

Java 2024.12.23