PHpullh
학습 라이브러리/Java/모듈 시스템(JPMS) 심화

JAVA · 기초 문법

모듈 시스템(JPMS) 심화

Java 9+의 모듈 시스템으로 패키지를 캡슐화하고 의존성을 명시합니다.

기초 문법중급moduleJPMSexportsrequires

핵심 설명

Java 9+의 모듈 시스템으로 패키지를 캡슐화하고 의존성을 명시합니다.

Java code

// module-info.java (com.example.core 모듈)
// module com.example.core {
//     exports com.example.core.api;     // 공개 패키지
//     exports com.example.core.model;
//     // com.example.core.internal은 비공개
//
//     requires java.logging;            // 의존 모듈
//     requires transitive java.sql;     // 전이적 의존
//
//     provides com.example.core.api.Service
//         with com.example.core.internal.ServiceImpl;
// }

// 공개 API
package com.example.core.api;

public interface Service {
    String process(String input);
}

// 내부 구현 (외부 접근 불가)
package com.example.core.internal;

import com.example.core.api.Service;

public class ServiceImpl implements Service {
    @Override
    public String process(String input) {
        return input.toUpperCase();
    }
}

학습 팁

requires transitive는 의존하는 모듈을 자동으로 읽기 가능하게 합니다. 라이브러리 모듈에서 유용합니다.

주의할 점

exports하지 않은 패키지는 다른 모듈에서 접근할 수 없습니다. 리플렉션도 opens 없이는 차단됩니다.

자주 묻는 질문

모듈 시스템(JPMS) 심화란 무엇인가요?

Java 9+의 모듈 시스템으로 패키지를 캡슐화하고 의존성을 명시합니다.

모듈 시스템(JPMS) 심화 학습 시 주의할 점은 무엇인가요?

exports 하지 않은 패키지는 다른 모듈에서 접근할 수 없습니다. 리플렉션도 opens 없이는 차단됩니다.