라이브러리
- 프로그램 개발 시 활용할 수 있는 클래스와 인터페이스를 모아둔 것
- ~.jar 파일 형식으로 표현됨
- 라이브러리에는 클래스와 인터페이스의 바이트 코드 파일(~.class)들이 압축되어 있음
- 특정 클래스와 인터페이스가 여러 응용 프로그램에서 쓰인다면 이를 모아서 라이브러리(jar)로 압축하여 사용
라이브러리를 만드는 방법
위와 같은 라이브러리를 만드는 과정
1. 이클립스에서 module.info.java 파일을 포함하지 않은 새 프로젝트를 생성
2. 프로젝트 안에 패키지를 생성
3. 패키지에 넣고 싶은 클래스, 인터페이스 작성
4. jar 파일을 저장할 dist 폴더를 프로젝트 내부에 생성
5. my_lib 우클릭 → Export 클릭
6. dist 폴더에 jar 파일 생성
6. 해당 라이브러리를 사용할 Application1 프로젝트를 생성
7. Application1의 classpath에 jar 파일을 추가
Application1 우클릭 -> Build path -> configure build path 클릭
이후 확인해보면 아래와 같이 referenced Libraries에 my_lib이 추가된 것을 확인할 수 있음
이후, Application1-app-Main에서 라이브러리 내의 클래스를 사용할 수 있음
모듈
- 일반 라이브러리는 내부에 포함된 모든 패키지에 외부 프로그램에서의 접근이 가능하지만, 모듈은 다음과 같이 일부 패키지 은닉이 가능
- 라이브러리와 달리 module-info.java 파일을 포함한다. → Module Descriptor
- 모듈 간의 의존성을 파악할 수 있다. (A 모듈이 작동하려면 B 모듈이 있어야 한다 등)
- 대규모 어플리케이션을 기능별로 모듈화하여 유지 보수성을 높일 수 있음
모듈을 만드는 방법
라이브러리를 만드는 방법과 대체로 유사
1. 마찬가지로 모듈로 사용할 프로젝트를 생성, 이 때 module-info.java 파일을 포함 (Create module-info.java file)
프로젝트 안에 패키지와 클래스들을 생성
2. 응용프로그램 프로젝트도 생성
3. 라이브러리 build path 설정했을 때와 같은 방식으로 들어가서 module path 설정
4. my_module_a의 module-info.java
→ 패키지1, 2를 모두 외부에서 사용할 수 있게 허용
5. 모듈을 사용할 응용프로그램 모듈의 module-info.java
→ 모듈 a, b에서 exports 한 패키지를 application2에서 사용할 수 있도록 함(의존성 설정)
'CS > Java' 카테고리의 다른 글
[Java] Nested Class 내부(중첩) 클래스, Nested Interface 내부(중첩) 인터페이스 (0) | 2024.05.26 |
---|---|
[Java] interface 인터페이스 메서드 종류(default, static, private) (0) | 2024.05.26 |
[Java] interface 인터페이스 (0) | 2024.05.26 |
[Java] 상속 Inheritence - 4 (다운 캐스팅과 instanceof, abstract class 추상 클래스, sealed class) (0) | 2024.04.17 |
[Java] 상속 Inheritance - 3 (Type Conversion 형변환, Polymorphism 다형성) (0) | 2024.04.15 |