module-info.java
모듈을 선언합니다
module-info.java은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
모듈 시스템
Java 9에서 도입된 Java 플랫폼 모듈 시스템(JPMS)을 사용하면 패키지를 명시적인 의존성과 경계를 가진 이름 있는 모듈로 그룹화할 수 있습니다.
선언은 특수한 파일인 module-info.java에 작성합니다.
모듈을 사용하는 이유
모듈이 없던 시절에는 클래스 경로가 평평하고 구조화되지 않은 JAR 파일 모음이었습니다. 누구나 모든 공개 클래스에 접근할 수 있었고, 누락된 의존성은 실행할 때만 드러났습니다.
모듈은 컴파일 및 실행 시작 시 검증되는 강력한 캡슐화와 신뢰할 수 있는 구성을 추가합니다.
module-info가 위치하는 곳
module-info.java는 소스 트리의 루트, 즉 패키지 디렉터리보다 상위에 위치합니다. 이 파일은 모듈의 루트에 있는 module-info.class로 컴파일됩니다.
모듈마다 정확히 하나만 존재합니다.
최소 선언
가장 단순한 모듈에는 이름만 있습니다. 관례상 이름은 패키지와 마찬가지로 역 DNS 형식을 사용합니다.
module com.example.app {
}의존성 선언
다른 모듈에 의존하려면 requires를 사용합니다. 모든 모듈은 암묵적으로 java.base를 요구하므로 이 모듈은 직접 선언하지 않습니다.
module com.example.app {
requires java.sql;
requires java.logging;
}패키지 공개하기
기본적으로 모듈의 패키지는 숨겨져 있습니다. exports를 사용하면 다른 모듈에서 패키지의 공개 형식을 볼 수 있습니다.
module com.example.app {
exports com.example.app.api;
}강력한 캡슐화
export하지 않는 모든 패키지는 외부에서 완전히 접근할 수 없으며, 공개 클래스도 예외가 아닙니다. 이것이 클래스패스 환경과 다른 가장 큰 차이입니다.
내부 패키지는 JVM에 의해 강제로 내부에 유지됩니다.
모듈 이름 지정 규칙
모듈 이름은 패키지와 동일한 어휘 규칙을 따릅니다. 즉, 식별자를 점으로 구분합니다. 다른 모듈이 이름으로 의존하므로 안정적이고 전역적으로 고유한 이름을 선택해야 합니다.
모듈 이름을 바꾸면 해당 모듈을 사용하는 쪽에서 호환성이 깨지는 변경이 발생합니다.
더 완전한 예제
실제 선언에는 requires와 exports가 함께 사용됩니다. 이 모듈은 로깅에 의존하며 공개 API 패키지만 외부에 공개합니다.
module com.example.orders {
requires java.logging;
requires com.example.payments;
exports com.example.orders.api;
}모듈 컴파일하기
모듈을 인식하는 옵션을 사용하여 컴파일합니다. --module-source-path와 -d 옵션은 소스와 출력물이 있는 위치를 컴파일러에 알려 줍니다.
javac -d out --module-source-path src $(find src -name '*.java')java --module-path out --module com.example.app/com.example.app.Main
모듈 경로
모듈은 클래스패스의 모듈식 후속 방식인 모듈 경로(--module-path)에서 확인됩니다. 실행기는 실행하기 전에 각 모듈의 설명자를 읽어 의존성 그래프를 구성합니다.
빠른 확인
패키지의 기본 가시성을 떠올려 보십시오.
복습
module-info.java의 기본 사항을 배웠습니다.
- 소스 루트에 모듈마다 설명자 하나를 둡니다.
requires는 의존성을 선언하며,java.base는 암시적으로 포함됩니다.exports는 패키지를 공개하고, 나머지는 모두 캡슐화됩니다.--module-path와--module을 사용하여 빌드하고 실행합니다.
다음에는 requires와 exports 지시문을 자세히 살펴봅니다.
자주 묻는 질문
“module-info.java” 강의는 무료인가요?
네 — “module-info.java” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“module-info.java”에서 뭘 배우나요?
모듈을 선언합니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Java Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“module-info.java” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- module-info.java
- requires와 exports
- provides/uses를 사용한 서비스
- 모듈로 마이그레이션