Jigsaw는 Java 9부터 도입된 기능으로, 자바 애플리케이션을 모듈화하여 더욱 견고하고 유연한 코드를 작성할 수 있게 해줍니다. 이 기능을 활용하여 멀티플랫폼 애플리케이션을 개발하는 방법을 알아보겠습니다.
1. Jigsaw 모듈 생성하기
먼저, Jigsaw 모듈을 생성해야 합니다. 이를 위해서는 프로젝트 디렉토리 내에 module-info.java
파일을 만들어야 합니다. 이 파일은 해당 모듈의 정보와 의존성을 정의하는데 사용됩니다.
module MyApp {
exports com.example.app;
requires javafx.controls;
}
위 코드는 MyApp
이라는 모듈을 생성하는 예시입니다. exports
키워드를 사용하여 해당 모듈에서 외부로 공개되는 패키지를 지정하고, requires
키워드를 사용하여 모듈이 의존하는 다른 모듈을 명시합니다. 위 예시에서는 javafx.controls
모듈을 사용하고 있습니다.
2. 모듈화된 애플리케이션 작성하기
모듈을 생성한 뒤에는 해당 모듈을 활용하여 애플리케이션을 작성할 수 있습니다.
package com.example.app;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
public class MyApp extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Button button = new Button("Click me!");
button.setOnAction(event -> System.out.println("Button clicked!"));
Scene scene = new Scene(button, 200, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
}
위 코드는 com.example.app
패키지에 있는 MyApp
클래스로부터 시작하는 애플리케이션을 나타냅니다. start
메소드에서는 JavaFX를 사용하여 간단한 윈도우와 버튼을 생성하고, 버튼 클릭 시 메시지를 출력하는 기능을 구현하고 있습니다.
3. 애플리케이션 빌드하기
마지막으로, 애플리케이션을 빌드하여 실행 가능한 파일을 생성해야 합니다. Jigsaw 모듈을 활용한 애플리케이션은 기존 방식과는 다르게 모듈 경로를 지정해주어야 합니다.
javac -d <output_directory> --module-source-path <module_directory> \
--module <module_name>
위 명령어에서 <output_directory>
는 컴파일된 클래스 파일의 출력 경로를, <module_directory>
는 모듈의 소스 코드 경로를, <module_name>
는 빌드할 모듈의 이름을 나타냅니다.
java --module-path <module_path> --module <module_name>
위 명령어에서 <module_path>
는 모듈의 경로를, <module_name>
은 실행할 모듈의 이름을 나타냅니다.
결론
Jigsaw 모듈을 활용한 멀티플랫폼 애플리케이션 개발은 코드의 모듈화와 의존성 관리를 통해 애플리케이션의 유지보수성을 향상시킬 수 있습니다. Java 9부터 도입된 이 기능은 자바의 업데이트 버전에서도 계속 발전하고 있으므로, 적극적으로 활용해보는 것을 권장합니다.