개요
자바 9부터 도입된 모듈 시스템은 프로그램 작성 과정에서 라이브러리 관리를 간단하게 할 수 있는 좋은 기능이다. 이 시스템의 핵심 파일이라고 할 수 있는 module-info.java와 requires 가 무엇인지 살펴보자. module-info.java는 소스 파일들이 모듈로 관리되기 위한 정보를 제공하는 파일이고, requires는 현재 모듈이 다른 모듈에 어떤 라이브러리를 사용하는지를 저장하는 값이다.
(위 사진은 내용과 무관함 Pexels 제공 사진)
중점내용
1. 모듈 시스템이란?
모듈 시스템은 자바 9에서 소개된 개념으로, 기존의 자바 소프트웨어 개발의 복잡함을 줄이고 소프트웨어 개발의 관리를 효율적으로 가능하게 하기 위해 만들어졌습니다. 모듈 시스템의 가장 기본적인 부분은 module-info.java 파일이며, 각 모듈의 구성과 관련된 정보를 나타냅니다. 또한 모듈 간의 의존 관계를 정의하고 나타내기 위해 requires 문을 사용합니다. 모듈 시스템을 사용하면 기존의 자바 프로그램을 모듈로 쪼개서 간단하게 다룰 수 있고, 프로그램의 소스 코드를 업데이트할 때 다른 모듈이 영향을 받지 않도록 보호할 수 있습니다.
2. module-info.java 파일
module-info.java 파일은 자바 9 부터 도입된 모듈 시스템의 핵심적인 파일로, 일반적으로 자바 프로젝트의 루트 디렉토리에 위치합니다. 프로그램을 모듈화하기 위해 사용됩니다. 모듈 간의 의존성을 정의하기 위해 requires 절을 통해 다른 모듈을 필요로 하는지, 모듈 간의 공개 API를 정의하기 위해 exports 절을 사용합니다. 이를 통해 다른 모듈로부터의 접근을 제한하고, 필요한 모듈만 가져오는 상호 동작성을 제공합니다.
3. requires 키워드
requires 키워드는 자바 모듈 시스템에서 모듈간의 의존 관계를 기술하기 위한 핵심적인 키워드입니다. module-info.java 파일에서 사용하며, 모듈 간의 관계 상태를 정의하기 위해 사용할 수 있습니다. requires 키워드는 다른 모듈의 기능을 사용할 때 필요한 것을 기술하는데 사용됩니다. 즉, requires 키워드는 다른 모듈의 기능을 반드시 사용해야하는 경우 사용합니다. 따라서, 다른 모듈의 기능을 사용해야 하는 경우 requires 키워드를 잘 활용해야 합니다.
4. 모듈 시스템 사용 예
모듈 시스템을 사용하여 두 개의 모듈을 만들 때는 각 모듈에 대한 module-info.java 파일을 작성해야 합니다. 이 파일은 모듈 이름과 모듈 종속성 및 기타 다른 모듈에 대한 선언을 포함합니다.
모듈 시스템을 이용하여 간단한 예제를 살펴보겠습니다. 두 개의 모듈을 만들고 하나는 다른 하나를 참조하도록 구성합니다. 모듈 A는 모듈 B에 의존합니다.
모듈 A의 module-info.java 파일은 다음과 같습니다.
module A {
requires B;
}
모듈 B의 module-info.java 파일은 다음과 같습니다.
module B {
exports B;
}
모듈 A는 모듈 B를 참조하기 때문에 B 모듈의 공개 사양을 사용할 수 있습니다. 이제 모듈 A를 사용하여 프로그램을 작성할 수 있습니다.
5. 모듈 시스템의 장점
모듈 시스템은 여러 가지 장점을 가지고 있습니다.
1. 기존의 자바 프로그램과의 호환성이 있습니다. 모듈 시스템을 구현할 때 기존의 바이트 코드는 그대로 사용할 수 있어, 별도의 수정 없이 기존 코드를 사용할 수 있게 됩니다.
2. 모듈 시스템은 개발자들이 보다 유연하고 보다 상세한 모듈 간 의존성을 관리할 수 있게 합니다. 모듈 사이의 의존성을 명확하게 정의하고, 모듈 간 종속 관계를 정의할 수 있게 됩니다.
3. 모듈 시스템은 안정적이고 정확한 모듈 사이의 의존성을 관리할 수 있기 때문에 다른 시스템과의 간편한 통합이 가능합니다. 또한, 독립적인 모듈만 개발하고 그 모듈을 통합하여 복잡한 시스템을 만들 수 있게 됩니다.
4. 모듈 시스템은 개발 시간을 줄일 수 있게 합니다. 개발자들은 하나의 모듈로 작업하고, 이 모듈을 다른 시스템에 연결하기만 하면 됩니다. 또한, 다른 사람이 만든 모듈을 사용하기만 하면 됩니다.
5. 모듈 시스템은 코드의 재사용성을 높일 수 있습니다. 모듈이 재사용되고 다른 모듈과 결합되면 이는 다른 시스템에서 더 쉽게 사용할 수 있게 됩니다. 또한, 모듈을 개발할 때 중복되는 코드는 작성하지 않고 모듈을 간단하게 사용할 수 있습니다.
(위 사진은 내용과 무관함 Pexels 제공 사진)
마침말
자바 모듈 시스템은 Java 9부터 소개된 기능으로써, 모듈화된 소프트웨어를 개발하는데 필요한 도구들을 제공합니다. 그 중에서 가장 기본적인 것이 module-info.java 파일입니다. 이 파일은 각 모듈의 정보를 담고 있고, 해당 모듈이 사용할 기능과 의존성 등을 선언합니다. requires 명령어는 이 파일에서 다른 모듈의 기능을 사용하기 위해 사용하는 명령어로, 해당 모듈과 의존 관계가 성립되어 기능을 사용할 수 있도록 합니다. 모듈 시스템을 사용하면 모듈 사이의 관계를 더욱 잘 이해하고, 관리하기 쉽게 됩니다.
함께 보면 좋은 영상
JavaScript – 모듈 (1/5) : 모듈이란?