[java] Jigsaw 모듈의 런타임 환경과 클래스 로딩

Java 9부터는 Jigsaw 모듈 시스템이 도입되었습니다. 이 모듈 시스템은 자바 애플리케이션을 모듈 단위로 분리하고 관리할 수 있는 기능을 제공합니다. 이번 글에서는 Jigsaw 모듈의 런타임 환경과 클래스 로딩에 대해 알아보겠습니다.

Jigsaw 모듈의 런타임 환경

Jigsaw 모듈 시스템은 자바 런타임 환경을 모듈 단위로 분리하여 관리합니다. 각 모듈은 자체적으로 클래스와 리소스를 가지며, 다른 모듈과의 의존성을 명시적으로 정의할 수 있습니다. 또한, 모듈 간의 접근 제한도 설정할 수 있습니다.

이를 통해 Jigsaw 모듈은 애플리케이션의 아키텍처를 깔끔하게 유지할 수 있습니다. 필요한 모듈만 가져와서 사용하므로 애플리케이션의 실행 시간과 메모리 사용량을 최적화할 수 있습니다.

클래스 로딩

Jigsaw 모듈의 런타임 환경에서 클래스 로딩은 각 모듈을 기준으로 이루어집니다. 각 모듈은 자체적인 클래스 로더를 가지며, 다른 모듈의 클래스에 대한 접근은 모듈 간의 의존성에 따라 결정됩니다. 따라서, 모듈 간의 클래스 충돌이나 버전 충돌 같은 문제를 사전에 방지할 수 있습니다.

또한, Jigsaw 모듈의 클래스 로더는 유연성을 제공합니다. 클래스 로딩 과정에서 동적으로 추가적인 모듈을 로딩할 수 있으며, 모듈간의 의존성을 동적으로 변경할 수도 있습니다.

결론

Jigsaw 모듈의 런타임 환경과 클래스 로딩은 자바 애플리케이션을 보다 모듈화된 구조로 개발하고 관리할 수 있도록 해줍니다. 모듈 간의 의존성을 명확하게 정의하고 제어함으로써 애플리케이션의 유지보수성과 성능을 향상시킬 수 있습니다.

더 자세한 내용은 Java SE 9 Module System을 참고하세요.