1. Jigsaw란 무엇인가?
Jigsaw는 자바 9에서 도입된 프로젝트로, 자바 플랫폼 모듈 시스템을 제공합니다. 이 시스템을 사용하면 애플리케이션을 모듈 단위로 구성할 수 있으며, 각 모듈은 필요한 의존성을 명시적으로 선언하고 격리된 환경에서 실행될 수 있습니다.
2. Jigsaw의 목표
Jigsaw의 주요 목표는 다음과 같습니다:
-
더 작고 모듈화된 자바 플랫폼: Jigsaw는 자바 플랫폼을 작고 유연하게 만들어줍니다. 모듈 단위로 자바 플랫폼을 구축하면 필요한 모듈만 사용할 수 있고, 필요하지 않은 모듈은 포함시키지 않는 것이 가능합니다.
-
응용 프로그램 성능과 보안 향상: Jigsaw는 모듈 간의 의존성을 명시적으로 선언하고 격리된 환경에서 실행되기 때문에 응용 프로그램의 성능과 보안을 향상시킬 수 있습니다. 불필요한 클래스들이 로드되는 것을 방지하고, 모듈 간의 의존성 충돌을 방지할 수 있습니다.
-
협업과 유지 보수의 용이성: 모듈 단위로 애플리케이션을 구성하면 다른 개발자들과의 협업이 용이해지고 유지 보수가 편해집니다. 각 모듈은 독립적으로 개발하고 테스트할 수 있으며, 필요한 경우 모듈을 독립적으로 업데이트할 수 있습니다.
3. Jigsaw의 장점
Jigsaw는 다음과 같은 장점을 가지고 있습니다:
-
모듈화된 개발: Jigsaw를 사용하면 애플리케이션을 작고 모듈화된 단위로 관리할 수 있습니다. 필요한 모듈만 포함시키고, 불필요한 모듈은 제외시켜 애플리케이션의 크기를 줄일 수 있습니다.
-
의존성 관리: Jigsaw를 사용하면 모듈 간의 의존성을 명확하게 정의할 수 있습니다. 의존성 충돌을 방지하고, 애플리케이션의 실행 환경을 더욱 격리된 상태로 유지할 수 있습니다.
-
관리 용이성: 모듈 단위로 개발하면 협업과 유지 보수가 용이해집니다. 각 모듈은 독립적으로 개발하고 테스트할 수 있으며, 필요한 경우 모듈을 독립적으로 배포하거나 업데이트할 수 있습니다.
-
보안 강화: Jigsaw는 모듈 간의 접근 제어를 강화합니다. 필요한 기능만 공개하고, 불필요한 클래스나 패키지는 감추어 악의적인 사용을 제한할 수 있습니다.
-
성능 향상: 모듈 단위로 자바 애플리케이션을 개발하면 필요한 클래스만 로드되므로 메모리 사용량과 실행 속도를 최적화할 수 있습니다.
4. Jigsaw 활용 예시
Jigsaw를 활용하여 모듈화된 자바 애플리케이션을 개발하는 예시는 다음과 같습니다:
module com.example.application {
requires com.example.moduleA;
requires com.example.moduleB;
requires com.example.moduleC;
exports com.example.application;
}
위의 예시에서는 com.example.application
모듈이 com.example.moduleA
, com.example.moduleB
, com.example.moduleC
모듈에 의존성을 가지고 있음을 명시하고 있습니다. 이렇게 모듈 간에 의존성을 명시하면 애플리케이션의 모듈 관리와 의존성 관리가 훨씬 간편해집니다.