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

Java 9 모듈(Module)의 이점은 무엇일까?

Java 9에서 도입된 가장 중요한 기능 중 하나가 바로 모듈(Module)입니다. 모듈을 활용하면 코드를 '모듈'이라고 불리는 더 작은 단위의 구성 요소로 분리할 수 있습니다. 이는 각 모듈이 고유한 책임을 가지며, 정상적으로 동작하기 위해 필요한 다른 모듈에 대한 의존성을 직접 선언한다는 의미입니다.

Java 9에서 모듈러 프로젝트 만드는 방법

먼저 module-info.java라는 이름의 파일을 생성하고, 해당 모듈(패키지)에 추가해야 합니다. 예를 들어 패키지 이름이 com.mycompany.mypackage라면, 이 파일은 동일한 패키지 경로인 (src/com.mycompany.mypackage/module-info.java)에 위치하게 됩니다.

모듈은 exportsrequires 표현식을 선언하는 방식으로 정의할 수 있습니다.

1. 다른 모듈을 필요로 하는 경우 (requires)

우리 모듈이 다른 모듈의 기능을 사용해야 한다면 아래와 같이 작성합니다.

module com.tutorialspoint.greetings {
    requires org.tutorix;
}

2. 모듈의 내용을 외부에 공개하는 경우 (exports)

반대로 우리 모듈의 패키지 내용을 다른 모듈에 노출하고 싶다면 아래와 같이 작성합니다.

module org.tutorix {
    exports org.tutorix;
}

모듈 사용의 주요 이점

  • 강력한 보안성: 모듈은 불필요한 내부 정보를 안전하게 숨길 수 있습니다. 모듈은 오직 export된 패키지의 내용에만 접근할 수 있으며, 다른 모듈의 전체 콘텐츠나 public/internal API에는 접근할 수 없습니다. 즉, 한 모듈에서 public으로 선언된 요소라 하더라도 export되지 않으면 다른 모듈에서는 접근이 불가능합니다.
  • 경량화와 성능 향상: 필요한 모듈만 선택적으로 사용할 수 있기 때문에 애플리케이션이 더 작아지고 실행 속도도 빨라집니다.
  • 소형 기기 배포 용이: 메모리 요구 사항이 크게 줄어들어 IoT 기기 등 저사양 소형 디바이스에도 손쉽게 배포할 수 있습니다.
  • 단일 책임 원칙(SRP) 지원: 각 모듈이 하나의 명확한 역할만 담당하므로 단일 책임 원칙을 자연스럽게 지킬 수 있습니다.
  • 낮은 결합도 유지: 모듈 간 의존 관계가 명시적으로 선언되므로 컴포넌트 간 결합도(coupling)를 낮추고 유지보수성을 높이기 쉽습니다.