사용자 도구

사이트 도구


java:9:module

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
java:9:module [2017/12/12 09:38]
kwon37xi 만듦
java:9:module [2023/05/01 22:03] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Java 9 Module ====== ====== Java 9 Module ======
 +  * 모듈화(modularization)은 필수는 아니다.
 +  * [[java:jdeps|jdeps]]
 +===== 기본 명령 =====
 +  * ''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'' 모듈은 명시하지 않아도 자동으로 의존한다.
  
-  [[http://in.relation.to/2017/12/12/exploring-jlink-plugin-api-in-java-9/|Exploring the jlink plug-in API in Java 9 - In Relation To]]+===== module descriptor ===== 
 +  ''module-info.java''
  
 +<code java>
 +module java.base {
 +    exports java.io;
 +    exports java.lang;
 +    ...
 +}
 +</code>
 +
 +===== unnamed module =====
 +  * ''classpath'' 상에서 jar를 실행하면 unnamed module 상태가 된다.
 +
 +===== automatic module =====
 +  * module path 에서 실행되는 jar 는 module descriptor 가 없어도 jar 파일 이름이 자동으로 모듈이름이 된다.
 +  * 그래야만 module들 끼리 의존성을 지정하거나 할 수 있다.
 +  * 이 기능이 되어야 class path 기반에서 module path 기반으로 마이그레이션이 가능하다.
 +
 +<code sh>
 +jar -f movie_fe.jar -d
 +
 +movie.fe automatic
 +...
 +</code>
 +
 +===== module 타입별 차이점 =====
 +^ 타입 ^ path 방식 ^ ''module-info.java'' ^ requires & exports ^
 +| unnamed | classpath | 없음 | requires 전체 모듈, exports 전체 패키지 |
 +| automatic | modulepath | 없음 | requires 전체 모듈, exports 전체 패키지 |
 +| explicit | modulepath | 있음 | 명시적으로 requires, exports 지정 |
 +
 +===== 참조 =====
 +  * [[http://in.relation.to/2017/12/12/exploring-jlink-plugin-api-in-java-9/|Exploring the jlink plug-in API in Java 9 - In Relation To]]
 +  * [[https://www.baeldung.com/java-9-modularity|A Guide to Java 9 Modularity | Baeldung]]
 +  * [[https://medium.com/@kamatkar.onkar/from-legacy-to-modular-spring-app-3d41ebaf1fd9|From Legacy (Java ≤ 8) to Modular (Java 9) Spring App | by onkar kamatkar | Medium]]
 +  * [[https://www.oracle.com/kr/corporate/features/understanding-java-9-modules.html|Understanding Java 9 Modules | Oracle 대한민국]]
 +  * [[https://developer.ibm.com/tutorials/java-modularity-1/|Java 9+ modularity: The theory and motivations behind modularity - IBM Developer]]
 +  * https://www.youtube.com/watch?v=pfXsQyToipM
 +  * https://www.youtube.com/watch?v=22OW5t_Mbnk
 +  * [[https://jenkov.com/tutorials/java/modules.html|Java Modules]]
 +  * [[https://inside.java/2021/09/10/what-are-modules-about/|What modules are about – Inside.java]]
 +  * [[https://www.youtube.com/watch?v=0xijKEeb5ug&ab_channel=IntelliJIDEAbyJetBrains|Java Modules in Real Life - YouTube]]
java/9/module.1513040907.txt.gz · 마지막으로 수정됨: 2017/12/12 09:38 저자 kwon37xi