728x90
반응형
라이브러리
라이브러리 추가하기
- 프로그램 개발 시 활용 할 수 있는 클래스와 인터페이스들을 모아놓은 것
- 일반적으로 JAR 압축 파일(~,jar) 형태. 클래스와 인터페이스의 바이트코드 파일(~.class) 들이 압축
- 라이브러리 JAR 파일을 사용하려면 ClassPath(클래스를 찾기 위한 경로)에 추가
- 콘솔(명령 프롬프트 또는 터미널) 에서 프로그램을 실행 할 경우 : java 명령어를 실행할때 -classpath로 제공. 또는 CLASSPATH 환경 변수에 경로 추가
- 이클립스 프로젝트에서 실행할 경우 : 프로젝트의 Build Path에 추가
모듈
모듈
- 패키지 관리 기능까지 포함된 라이브러리.Java 9부터 지원
- 모듈은 일부 패키지를 은닉하여 접근할 수 없게 끔 할 수 있음
- 의존 모듈을 모듈 기술자(module-info.java)에 기술할 수 있어 모듈 간 의존 관계를 파악하기 쉬움
- 대규모 응용프로그램은 기능별로 모듈화해서 개발. 재사용성 및 유지보수에 유
응용프로그램 모듈화
모듈화
- 모듈화 : 응용프로그램을 기능별로 서브 프로젝트(모듈)로 쪼갠 다음 조합해서 개발
- 응용프로그램의 규모가 클수록 협업과 유지보수 측면에서 모듈화 유리
- 다른 응용프로그램서도 재사용 가능
모듈 배포용 JAR 파일
모듈 배포용 JAR 파일 생성
- 다른 모듈에서 쉽게 사용할 수 있게 바이트코드 파일(.class)로 구성된 배포용 JAR 파일을 모듈별로 따로 생성 할 수 있음
패키지 은닉
패키지 은닉
- 모듈은 모듈 기술자에서 exports 키워드를 사용해 내부 패키지 중 외부에서 사용할 패키지를 지정
- exports되지 않은 패키지는 자동적으로 은닉
- 한 가지 패키지로 모듈 사용 방법 통일
- 다른 패키지를 수정하더라도 모듈 사용 방법이 바뀌지 않아 외부에 영향을 주지 않음
전이 의존
의존 설정 전이하기
- my_application_2 프로젝트는 직접적으로 두 모듈 my_module_a, my_module_b를 requires하고 있는 의존 관계
- my_application_2는 my_module_a에 의존하고, my_module_a는 my_module_b에 의존하는 관계로 변경하면 컴파일 오류발생
- 의존 설정 전이 : my_module_a의 모듈 기술자에 transitive 키워드와 함께 my_module_b를 의존 설정하면 해결
집합 모듈
집합 모듈
- 여러 모듈을 모아놓은 모듈. 자주 사용되는 모듈들을 일일이 requires하지 않아 편리.
- 집합 모듈은 자체적인 패키지를 가지지 않고, 모듈 기술자에 전이 의존 설명만 함
리플렉션 허용
리플렉션
- 실행 도중에 타입(클래스, 인터페이스 등)을 검사하고 구성 멤버를 조사하는 것
- 은닉된 패키지는 기본적으로 다른 모듈에 의해 리플렉션을 허용하지 않음
- 모듈은 모듈 기술자를 통해 모듈 전체 또는 지정된 패키지에 대해 리플렉션을 허용할 수 있고, 특정 외부 모듈에서만 리플렉션을 허용할 수도 있음
자바 표준 모듈
표준 라이브러리
- JDK가 제공하는 표준 라이브러리는 Java 9 부터 모듈화됨
- 응용프로그램을 실행하는데 필요한 모듈만으로 구성된 작은 사이즈의 자바 실행 환경(JRE)
- Java 17의 전체 모듈 그래프(화살표는 모듈간의 의존 관계를 표시)
728x90
반응형
'자바' 카테고리의 다른 글
자바 - java.base 모듈 (0) | 2023.01.18 |
---|---|
자바 - 예외 처리 (0) | 2023.01.18 |
자바 - 중첩 선언과 익명 객체 (0) | 2023.01.17 |
자바 - 인터페이스 (0) | 2023.01.16 |
자바 - 상속 (0) | 2023.01.12 |