모듈

Java 9부터 지원하는 모듈은 패키지 관리 기능까지 포함된 라이브러리다.

일반 라이브러리는 내부에 포함된 모든 패키지에 외부 프로그램에서의 접근이 가능하지만, 모듈은 다음과 같이 일부 패키지를 은닉하여 접근할 수 없게끔 할 수 있다.

스크린샷 2023-10-31 오후 10.20.33.png

또 다른 차이점은 모듈은 자신이 실행할 때 필요로 하는 의존 모듈을 모듈 기술자(module-info.java)에 기술할 수 있기 때문에 모듈 간의 의존 관계를 쉽게 파악할 수 있다는 것이다.

아래 그림은 A 모듈은 B 모듈을 필요로 하고, B모듈은 C 모듈을 필요로 함을 나타낸다.

스크린샷 2023-10-31 오후 10.21.47.png

모듈도 라이브러리이므로 JAR 파일 형태로 배포할 수 있다. 응용 프로그램을 개발할 때 원하는 기능의 모듈(JAR) 파일을 다운로드해서 이용하면 된다.

응용프로그램 모듈화

응용 프로그램은 하나의 프로젝트로도 개발이 가능하지만, 이것을 기능별로 서브 모듈로 쪼갠 다음 조합해서 개발할 수도 있다. 아래 그림처럼 2개의 서브 모듈로 쪼개서 개발하고, 이들을 조합해서 완성할 수 있다.

스크린샷 2023-10-31 오후 10.23.17.png

응용 프로그램의 규모가 커질수록 협업과 유지보수 측면에서 서브 모듈로 쪼개서 개발하는 것이 유리하며, 이렇게 개발된 모듈들은 다른 응용프로그램에서도 재사용이 가능하다.