본문 바로가기

JAVA

모듈 기술자 (Java 11 버전 이후)

반응형

▶ 모듈(Module) 이란

- 외부에서 재사용할 수 있는 패키지들을 묶은 것

- 이클립스의 프로젝트는 하나의 모듈을 개발하는 것

 

chap01(프로젝트)은 하나의 모듈이고,

여러개의 모듈이 합쳐져서 프로그램이 된다.

 

▶ 모듈 기술자(module-info.java)

- 해당 모듈의 이름이 무엇인지

- 해당 모듈이 의존하는 모듈이 무엇인지

- 해당 모듈을 외부에서 어떻게 사용할 수 있는지

 

▶ 의존하는 모듈

- 해당 모듈(프로젝트)가 실행하기 위해서 필요한 외부 모듈을 말한다.

- Java 11 이후 버전 부터 생성한 모듈(프로젝트)은 java.base 모듈만 사용가능하다. java.base 모듈에는 java.lang / java.math / java.util / java.io / java.net / java.time이 있다.

- java.se 모듈에는 java.base 모듈을 기본으로 java.desktop ( java.awt, java.swing ) / java.sql ( java.sql, javax.sql ) 등이 있다.

- 기본적으로 java.base 모듈만 사용 가능하므로 다른 모듈을 사용할 경우 의존 모듈로 다음과 같이 등록해야 한다.

- 예를들어 require 을 안하고 java.desktop 에 있는 java.swing 모듈을 사용하게 되면 다음과 같이 오류가 발생한다.

 

▶ 모듈화가 필요한 이유

- 패키지 보안 : Java 8 같은 경우에 모든 패키지들이 사용가능 했기 때문에 어떤 패키지 같은 경우에는 보안상 노출이 되지 말았어야 했는데 모든 개발자가 접근하여 사용할 수 있었다. Java 11 부터 개발자가 사용하지 말아야 할 패키지 같은 경우 모듈 내부에 숨길 수 있다.

- 작은 최적의 런타임 이미지를 만들기 위해 : java 8 같은 경우에는 자바 실행(런타임) 환경에서 기본적으로 250MB 용량의 java.lang / java.tuil / java.se 패키지들을 모두 가져와서 프로그램을 비효율적으로 실행해야 한다. Java 11 부터는 모든 패키지들을 기능별로 모듈화 해놓았기 때문에 필요한 모듈만 가져와서 프로그램을 실행할 수 있기 때문에 효과적이다.

반응형

'JAVA' 카테고리의 다른 글

HashMap 의 Key, Value 기준 정렬하기  (0) 2020.06.23
JDBC API 연습문제  (0) 2020.04.02
"HashMap"의 "Value" 기준 정렬  (0) 2019.08.27
Map 컬렉션  (0) 2019.05.22
Set 컬렉션  (0) 2019.05.22