[java] Jigsaw 모듈을 활용한 멀티플랫폼 애플리케이션 개발 방법

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부터 도입된 이 기능은 자바의 업데이트 버전에서도 계속 발전하고 있으므로, 적극적으로 활용해보는 것을 권장합니다.

참고 자료