일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- KB국민은행
- 백엔드개발교육과정
- 빅분기
- prefixsum #C언어
- kb 기자단
- 빅분기필기
- 부트캠프
- 빅데이터분석기사
- kb네트워킹캠프
- 빅데이터분석기사필기
- kb it's your life 6기
- 전문가특강
- 금융권 it
- 이차원배열
- kb 취업교육
- kb it's your life
- kbit교육
- 데이터분석자격증
- sql
- 금융권 부트캠프
- autohotkey
- 백엔드개발
- 금융권it
- kb it's your life 기자단
- SQL데이터타입
- 멀티캠퍼스
- kb취업교육
- sql내장함수
- 반별이벤트
- 첫알고리즘평가
- Today
- Total
지식보부상님의 공부 일지
Java [10] 라이브러리와 모듈 본문
[1] 라이브러리
◈ 라이브러리 (library)
- 프로그램 개발시 활용 가능한 클래스, 인터페이스 모아둔 것
- 보통 JAR(Java ARchive) 압축파일 *.jar 형태로 존재
- JAR 파일에는 클래스, 인터페이스의 바이트코드 파일(*.class)가 압축되어 있음
- JAR파일을 ClassPath에 추가하여 사용
[2] 모듈
◈ 모듈 (module)
- 패키지 관리 기능까지 포함된 라이브러리 (Java9부터 지원)
- 일부 패키지 은닉 => 접근 불가하도록 함
- 의존 모듈을 모듈 기술자(module-info.java)에 기술 가능 => 모듈간 의존 관계 쉽게 파악 가능
- 기능별로 모듈화하여 재사용성, 유지보수 유리
[3] 응용프로그램 모듈화
◈ 모듈화(modulization)
- 응용 프로그램을 기능별로 서브 프로젝트(모듈)로 쪼갠 후 조합하여 개발함
- 응용 프로그램 규모 클수록 협업, 유지보수 유리
- 다른 응용프로그램에서의 재사용 가능
[4] 모듈 배포용 JAR 파일
◈ 모듈 배포용 JAR 파일
- 다른 모듈에서 쉽게 사용할 수 있게 바이트코드 파일(.class)로 구성된 배포용 JAR 파일 모듈별로 따로 생성 가능
[5] 패키지 은닉
◈ 패키지 은닉
- 모듈은 모듈기술자(module-info.java)에서 exports 키워드 사용해 내부 패키지 중 외부에서 사용할 패키지 지정
- exports 되지 않은 패키지는 자동으로 은닉
- 한가지 패키지로 모듈 사용 방법 통일
- 다른 패키지 수정해도 모듈 사용 방법 바뀌지 않아 외부에 영향 주지 x
[6] 전이 의존
◈ 의존 설정 전이하기
- 위처럼 my_application_2 프로젝트가 my_module_a, my_module_b 를 requires 하고 있는 의존 관계를 가졌을 때
- 위처럼 my_application_2 프로젝트가 my_module_a에 의존, my_module_a는 my_module_b에 의존하는 관계로 변경하면 컴파일 오류가 발생함 => 의존 설정 전이가 필요
- transitive 키워드 이용하면 위처럼 의존 설정 전이 가능
module my_module_a {
exports pack1;
requires transitive my_module_b;
}
[7] 집합 모듈
◈ 집합 모듈
- 여러 모듈을 모아놓은 모듈
- 자주 사용되는 모듈은 일일이 requires 하지 않고 집합 모듈 하나 requires 하여 편리함
- 자체적인 패키지 가지지 않음
- 모듈 기술자에 전이 의존 설정만 함
[8] 리플렉션 허용
◈ 리플렉션 (reflection)
- 실행 도중에 타입(클래스, 인터페이스 등) 검사하고 구성 멤버 조사하는 것
- 은닉된 패키지는 기본적으로 다른 모듈에 의해 리플렉션 허용하지 않음
- 모듈은 모듈 기술자 통해
- 모듈 전체를 리플렉션 허용
open module 모듈명 { ... }
- 패키지에 대해 리플렉션 허용
module 모듈명 {
...
opens 패키지1;
opens 패키지2;
}
- 특정 외부 모듈에서만 리플렉션 허용
module 모둘명 {
...
opens 패키지1 to 외부모듈명, 외부모듈명, ...;
opens 패키지2 to 외부모듈명;
}
할 수 있음
[9] 자바 표준 라이브러리
◈ 표준 라이브러리
- JDK 가 제공하는 표준 라이브러리는 Java 9부터 모듈화 됨
- java.base : 모든 모듈이 의존하는 기본 모듈로 java.lang, java.util, java.io 등 핵심 패키지 있음
- java.se: JDK 가제공하는 모든 모듈은 제공하는 집합 모듈
'KB IT's Your Life > Java' 카테고리의 다른 글
Java [11] 예외 처리 (1) | 2025.04.30 |
---|---|
Java 정리본 링크 정리 (2) | 2025.04.24 |
Java [09] 중첩 선언과 익명 객체 (0) | 2025.04.24 |
Java [08] 인터페이스 (0) | 2025.04.23 |
Java [07] 상속 (1) | 2025.04.22 |