사용자 도구

사이트 도구


java:9:module

Java 9 Module

  • 모듈화(modularization)은 필수는 아니다.

기본 명령

  • java --list-modules : 전체 모듈 목록
  • java --describe-module <module-name> : 모듈 정보 보기
  • jar -f <module.jar> -d : describe module.jar
  • java -p <module-path> --module <module.name> : <module.name> 모듈에 main 으로 지정된 클래스 실행.
  • classpath에서 실행하면 module 기능이 작동하지 않게 된다.

exports / requires

  • exports : package 를 export 한다. export 된 패키지는 public 으로 외부접근 가능하며, 그렇지 않은 패키지는 모듈 내부에서만 사용 가능하다.
  • requires : 다른 module 을 필요로 한다.
    • java.base 모듈은 명시하지 않아도 자동으로 의존한다.

module descriptor

  • module-info.java
module java.base {
    exports java.io;
    exports java.lang;
    ...
}

unnamed module

  • classpath 상에서 jar를 실행하면 unnamed module 상태가 된다.

automatic module

  • module path 에서 실행되는 jar 는 module descriptor 가 없어도 jar 파일 이름이 자동으로 모듈이름이 된다.
  • 그래야만 module들 끼리 의존성을 지정하거나 할 수 있다.
  • 이 기능이 되어야 class path 기반에서 module path 기반으로 마이그레이션이 가능하다.
jar -f movie_fe.jar -d
 
movie.fe automatic
...

module 타입별 차이점

타입 path 방식 module-info.java requires & exports
unnamed classpath 없음 requires 전체 모듈, exports 전체 패키지
automatic modulepath 없음 requires 전체 모듈, exports 전체 패키지
explicit modulepath 있음 명시적으로 requires, exports 지정

참조

java/9/module.txt · 마지막으로 수정됨: 2023/05/01 22:03 저자 kwon37xi