모듈 시스템을 이해하기위해 Unnamed모듈과  Named 모듈이 주요 포인트입니다.

 

class path에 있는 코드들은 모두 "unnamed" 모듈에 속해있다.
module path에 있는 코드들은 각자 "name"을 가지고 있다.


Unnamed 모듈

classpath에 위치한 모든 코드는 "unnamed" 모듈에 속하게 됩니다.
이는 전통적인 Java의 작동 방식과 호환성을 유지하기 위한 것입니다. 즉, 모듈 시스템을 도입하기 전의 코드는 unnamed 모듈에 속하게 됩니다.

 

Named 모듈

modulepath에 있는 코드들은 명시적으로 이름이 지정된 모듈에 속합니다.
각 모듈은 module-info.java 파일에 정의되며, 이 파일은 해당 모듈의 이름, 의존성, 내보낼 패키지 등의 정보를 포함합니다.
예를 들어, 애플리케이션이 모듈 시스템을 사용하지 않는다면, 모든 코드는 기본적으로 unnamed 모듈에 속하게 됩니다. 그러나 애플리케이션에서 모듈 시스템을 적극적으로 사용하려면 각 모듈은 자체 이름과 module-info.java를 가져야 하며, 이러한 모듈은 modulepath에 위치해야 합니다.

결론적으로, Java의 모듈 시스템은 큰 프로젝트의 구조와 관리를 더 효율적으로 만들기 위한 방법으로 도입되었습니다. 기존 코드와의 호환성을 유지하면서도, 새로운 프로젝트에서는 더 나은 구조와 캡슐화를 제공합니다.

 

 

모듈 만들기

 

이클립스에서 Java 프로젝트의 라이브러리와 클래스를 관리하기 위한 설정은 classpath와 modulepath 두 가지 방법으로 이루어집니다.

 

모듈을 만드는 방식도 나뉩니다.

 

예시 모듈 내용

package pack1;
public class ModuleTest {
	public void print() {
		System.out.println("ModuleTest1");
	}
}

 

classpath의 경우

패키지나 프로젝트를 오른쪽 클릭합니다.
Export...를 선택합니다.
Java -> JAR file을 선택합니다.
원하는 설정을 지정하고 JAR 파일의 저장 위치를 선택한 다음 완료를 클릭하여 JAR 파일을 생성합니다.

 

modulepath의 경우

 

먼저, 프로젝트 내에서 module-info.java 파일을 생성해야 합니다.
이 파일에서는 모듈의 이름, 의존성, 그리고 공개할 패키지 등의 정보를 포함합니다.

 

module-info.java에 내용 추가하기

module myModuleName {
    exports pack1;
}

여기서 myModuleName은 이 모듈의 이름입니다. 이 이름은 유일해야 하며, 다른 모듈과 중복되면 안됩니다. 

 

패키지나 프로젝트를 오른쪽 클릭합니다.
메뉴에서 Export...를 선택합니다.
Java -> JAR file을 선택합니다.
원하는 설정을 지정하고 JAR 파일의 저장 위치를 선택합니다. 이 때, module-info.class가 포함되어 있어야 합니다.
완료를 클릭하여 JAR 파일을 생성합니다.

 

 

이 모듈화된 프로젝트(JAR 파일 포함)를 사용하려면...

 

classpath의 경우 : 전통적인 방법으로 buildpath에 해당 JAR 파일 또는 디렉토리를 추가해야 합니다.

modulepath의 경우 : module-info.java에 모듈 관련 설정(예: requires, exports 등)을 해주어야 합니다.

Java의 모듈 시스템(JPMS)를 사용하여 모듈을 정의하려면 module-info.java 파일을 프로젝트에 추가해야 합니다.
이를 통해 프로젝트를 모듈화하고 JAR 파일로 내보낼 수 있습니다.

 

 

Classpath 모듈 적용

전통적인 Java의 경로 설정입니다. classpath를 사용하여 프로젝트의 클래스와 라이브러리의 위치를 설정합니다.

 

설정 방법

프로젝트 우클릭 > Properties > Java Build Path > Libraries 탭.
Add JARs... 또는 Add External JARs...로 필요한 JAR 파일 추가.
classpath에 있는 코드는 Java 9부터 도입된 module-info.java 설정을 인식하지 않습니다.

 

package test;

import pack1.ModuleTest;

public class Main {
	public static void main(String[] args) {
		ModuleTest moduleTest = new ModuleTest();
		moduleTest.print();
	}
}

사용할 클래스에 import 해주기

 

Modulepath 모듈 적용

 

설정 방법


프로젝트 우클릭 > Properties > Java Build Path > Libraries 탭.
Modulepath 섹션에서 필요한 모듈 또는 라이브러리 추가.
module-info.java는 모듈의 정의와 설정을 담고 있으며, 해당 설정은 모듈이 modulepath에 있을 때만 적용됩니다.
module-info.java의 exports 지시어는 특정 패키지를 다른 모듈에 공개하는 데 사용됩니다. 이 설정은 modulepath에서만 유효합니다.

 

package test;

import pack1.ModuleTest;

public class Main {
	public static void main(String[] args) {
		ModuleTest moduleTest = new ModuleTest();
		moduleTest.print();
	}
}

사용할 클래스에 import 해주기

 

module test {
    requires myModuleName;
}

modulepath를 사용할 패키지 내 module-info.java 에 requires 해주기.

'Java' 카테고리의 다른 글

[Java] enum (열거형)  (0) 2023.10.03
[Java] java.lang 클래스  (0) 2023.10.03
[Java] 생성자 메서드와 this  (0) 2023.10.03
[Java]2차 배열과 for-each문  (0) 2023.10.03
[Java] 중첩 for문  (0) 2023.10.03