Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9 모듈 시스템 완벽 정리: Jigsaw 프로젝트가 가져온 핵심 변화

Java 9 모듈 시스템이란?

Java 9의 가장 큰 변화 중 하나로 꼽히는 모듈 시스템(Module System)지그소(Jigsaw) 프로젝트의 일환으로 도입되었습니다. 이를 통해 자바는 더 작고, 안전하며, 효율적인 플랫폼 구조로 재탄생하게 되었습니다.

지그소 프로젝트는 다음과 같은 주요 기능들을 포함합니다.

  • 모듈화된 JDK(Modular JDK)
  • 모듈화된 자바 소스 코드(Modular Java Source Code)
  • 모듈화된 런타임 이미지(Modular Run-time Images)
  • 자바 내부 API 캡슐화(Encapsulate Java Internal APIs)
  • 자바 플랫폼 모듈 시스템(Java Platform Module System)

모듈 시스템이 필요한 이유

모듈 시스템 도입의 핵심 동기 중 하나는 메모리가 제한적인 장치에서도 실행 가능한 모듈형 JVM을 제공하는 것입니다. 기존에는 애플리케이션 실행 시 불필요한 라이브러리까지 함께 로드되었지만, 이제 JVM은 애플리케이션에 실제로 필요한 모듈과 API만으로 경량화되어 구동될 수 있습니다. 이는 임베디드 환경이나 클라우드 환경에서 특히 유용합니다.

기본 문법

module Module-Name {
requires moduleName;
exports packageName;
}

모듈 디스크립터의 역할

모듈러 JAR 파일에는 기존 JAR에는 없던 모듈 디스크립터(module descriptor)가 추가로 포함됩니다. 이 디스크립터에서는 두 가지 핵심 선언을 통해 모듈의 구조를 정의합니다.

  • requires: 해당 모듈이 의존하는 다른 모듈을 선언하여 모듈 간 의존성을 명시적으로 표현합니다.
  • exports: 외부 모듈에 공개할 패키지를 지정합니다. 공개되지 않은 패키지는 다른 모듈에서 접근할 수 없으므로 강력한 캡슐화가 가능합니다.

이처럼 명시적인 의존성 관리와 패키지 캡슐화를 통해, 대규모 애플리케이션과 라이브러리의 유지보수성과 보안성이 크게 향상됩니다.