[java] Jigsaw 모듈을 사용한 애플리케이션 개발 사례
Jigsaw는 Java 9부터 도입된 모듈 시스템으로, 애플리케이션 개발을 더 모듈화하고 격리된 환경을 구축할 수 있게 해줍니다. 이번 포스팅에서는 Jigsaw 모듈을 사용하여 간단한 애플리케이션을 개발하는 사례를 살펴보겠습니다.
프로젝트 구조
우리의 애플리케이션은 “Hello, World!”를 출력하는 기능을 가진 모듈과 이를 사용하는 메인 모듈로 구성됩니다. 프로젝트 구조는 다음과 같습니다.
myapp
├── src
│ ├── com.myapp
│ │ └── HelloWorld.java
│ └── module-info.java
└── out
└── mods
HelloWorld 모듈 개발
우리의 애플리케이션을 구성하는 첫 번째 모듈은 HelloWorld 모듈입니다. 이 모듈은 매우 간단한 기능을 가지고 있으며, “Hello, World!”를 출력하는 기능을 제공합니다.
우선 HelloWorld.java
파일을 다음과 같이 생성합니다.
package com.myapp;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
그리고 module-info.java
파일에 모듈 정보를 작성합니다.
module com.myapp {
// 모듈에 속하는 클래스를 지정합니다.
exports com.myapp;
}
메인 모듈 개발
이제 메인 모듈을 개발해보겠습니다. 이 모듈은 HelloWorld 모듈을 사용하여 “Hello, World!”를 출력하는 기능을 가지고 있습니다.
일단 module-info.java
파일을 다음과 같이 작성합니다.
module com.mainapp {
// HelloWorld 모듈을 사용하기 위해 requires 문을 추가합니다.
requires com.myapp;
}
그리고 메인 클래스인 MainApp.java
파일을 생성하고 다음과 같이 작성합니다.
package com.mainapp;
import com.myapp.HelloWorld;
public class MainApp {
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.main(args);
}
}
어플리케이션 실행
이제 어플리케이션을 빌드하고 실행해보겠습니다.
myapp
디렉토리로 이동합니다.- 다음 명령어로 HelloWorld 모듈을 컴파일합니다.
javac -d out/mods/com.myapp src/com.myapp/module-info.java src/com.myapp/HelloWorld.java
- 다음 명령어로 MainApp 모듈을 컴파일합니다.
javac -mp out/mods -d out/mods/com.mainapp src/com.mainapp/module-info.java src/com.mainapp/MainApp.java
- 다음 명령어로 MainApp 모듈을 실행합니다.
java -mp out/mods -m com.mainapp/com.mainapp.MainApp
출력 결과는 다음과 같아야 합니다.
Hello, World!
결론
이번 포스팅에서는 Jigsaw 모듈을 사용하여 간단한 애플리케이션을 개발하는 사례를 살펴보았습니다. Jigsaw 모듈을 사용하면 애플리케이션을 더 모듈화하고 격리된 환경을 구축할 수 있으며, 애플리케이션의 유지보수와 확장성을 크게 향상시킬 수 있습니다.