이것이 자바다 8일차 - Chapter10 라이브러리와 모듈

Seo-Faper·2023년 1월 18일
0

이것이 자바다

목록 보기
10/20

라이브러리 만드는 법

라이브러리란? 프로그램 개발 시 활용할 수 있는 클래스와 인터페이스들을 모아놓은 것이다.
*.jar 파일 형태로 존재하며 클래스와 인터페이스의 바이트코드 파일이 압축되어 있다.

인텔리제이에서 jar 추출 하는 법

대충 이렇게 추출할 코드를 만들고

File -> Project Settings -> Artifacts

저기 + 표시 눌러주고 From module with depencies 눌러서 만들고 Apply
그 후 Build -> Build Artifacts
그럼 저 경로에 jar파일이 생긴다.

라이브러리 추가하는 법


File -> Project Settings -> Libraries

그리고 + 표시 눌러서 추가하면 됨

모듈 만드는 법

모듈이란 패키지 관리 기능이 포함된 라이브러리를 말한다.
일반 라이브러리는 내부에 포함된 모든 패키지에 외부 프로그램에서의 접근이 가능하지만
모듈은 패키지를 은닉하여 접근할 수 없게끔 할 수 있다.

또한 모듈 기술자(module-info.java)를 통해 모듈간의 의존 관계를 쉽게 파악할 수 있다.

응용프로그램의 규모가 커질수록 협업과 유지보수 측면에서 서브 모듈로 쪼개서 개발하는 것이 유리하다.

module-info 만드는 법

exports <패키지 명>

exports 키워드는 해당 모듈이 가지고 있는 패키지를 외부에서 사용할 수 있도록 열어주는 역할을 한다.

requires <모듈 명>

requires 는 모듈을 이식받는 모듈이나 프로젝트에서 필요한 의존 모듈을 설정하는 키워드이다.
즉, 어떤 모듈을 컴파일 하거나 실행 할 때 반드시 먼저 필요한 의존 모듈을 설정하는 것이다.

그런데 여기서 의존 모듈을 의존 모듈로 쓰고 싶을 때가 있다.
즉, MyApplication -> module_a -> module_b 이런 구조로 의존성을 가지고 싶을 때가 있는데, MyApplication에서 requires로 module_a를 의존 설정 해도 module_a는 module_b를 의존 모듈로 설정하고 있으면 MyApplication에서는 module_b를 모르기 때문에 설정을 할 수가 없다. 그 때 사용하는 키워드가 전의 의존 (requires transtivie) 이다.

requires transitive module_b

module_a에서 이렇게 쓰면 의존을 받는 MyApplication에서도 module_b를 쓸 수 있다.

module-info.java

module my.module.a {
    exports pack1;
    requires transitive my.module.b;
}

즉, module_a의 모듈기술자를 이렇게 작성하면 MyApplication에서 module_a를 requires로 받았을 때 정상적으로 module_b 까지 사용할 수 있는 것이다.

모듈 추가하는 법


File -> Project Settings -> Modules
여기서 추가하면 된다.

연습문제


2번 소스파일이 아니라 .class 파일로 존재합니다.

3번 없으면 모듈로 취급 못받습니다.


3번 할 수 있습니다. 내가 의존을 설정하고 또 다른 모듈에게 전의 할 수 있죠.

4번 집합 모듈을 의존 설정해도 별개로 다른 모듈의 의존 설정을 할 수 있습니다.

2번 아무리 기본 모듈이라도 쓸려면 import 해야 합니다.

profile
gotta go fast

0개의 댓글