본문 바로가기
자바

[Java] 자바의 모듈 시스템(module)

by 책 읽는 개발자_테드 2021. 9. 9.
반응형

모듈시스템(10, jigsaw)

ㆍ자바에서 제공하는 패키지보다 높은 수준의 새로운 구조 단위

ㆍ모듈시스템은 자바 9에 Jigsaw 프로젝트로 부터 도입

 

사용법

ㆍ의존하는 다른 모듈(requires)과 다른 모듈에서 접근할 수 있는 항목(exports)을 포함한 모듈에 대한 설정이 들어있는 module-info.java 파일을 생성함

 

 예시 - Decoder 모듈

module Decoder{
requires Reader;
exports com.decoder;
}

 위 코드의 의미: Decoder 모듈은 Reader 모듈에 종속되고, com.decoder 패키지를 다른 모듈에 노출함 (다른 모듈은 오직 decoder 패키지에만 접근 가능)

 

 예시 - Reader 모듈

module Reader{
exports org.reader;
}

 위 코드의 의미: Reader 모듈이 다른 모듈에 의존하지 않고, 다른 모듈은 해당 모듈 내의 org.reader 패키지에만 접근할 수 있음

 

 예시 - Reader, Decoder 모듈의 클래스

    package org.reader;
    public class Scanner{
        public static String name() {
            return "scanner";
        }
    }
    package com.decoder;
    import org.reader.Scanner;
    public class Main {
        public static void main(String[] args) {
            System.out.format("Reading with a %s!%n", Scanner.name());
        }
    }

 Decoder 모듈은 Scanner 클래스를 사용하여 디코딩할 데이터를 검색하기 위해 Reader 모듈이 필요하다.

 

모듈 시스템의 장점

 보안성

   - exports 하지 않은 클래스 코드를 모듈 내부에서 안전하게 유지할 수 있음

 클래스 경로 지옥 문제에서 벗어날 수 있음

     - 이미 있는 클래스 경로에  jar가 이전 버전으로 판명나는 등의 문제 

ㆍ더 쉬운 테스트 가능

       - 전체 프로젝트를 테스트하는 대신 각 모듈을 테스트하고 모듈이 예상대로 작동하는지 확인

ㆍ더 나은 유지 보수 가능

       - 한 모듈의 코드를 변경해도 모듈이 정상적으로 작동하는 한 다른 모듈의 클래스에 영향을 주지 않음

       - 전체 프로젝트 대신 모듈만 다시 빌드 가능

 

출처

모던 자바인 액션

https://blog.idrsolutions.com/2017/05/java-9-modularity-explained-in-5-minutes/

 

반응형

댓글