자바 - 모듈 시스템

자바 모듈 시스템 소개

안녕하세요, 자바 프로그래머를 꿈꾸는 여러분! 오늘, 우리는 자바의 모듈 시스템의 흥미로운 세계로 여행을 떠날 거예요. 여러분의 친절한 지역 컴퓨터 과학 교사로서, 저는 이 fascinante 주제를 단계별로 안내해 드리겠습니다. 프로그래밍에 새로운 사람이라도 걱정하지 마세요 – 우리는 기본부터 시작하여 함께 올라가겠습니다!

Java - Module System

모듈이란 무엇인가요?

간단한 비유로 시작해 보죠. 자신의 LEGO зам을 지어보는 것을 상상해 봅시다. 각 LEGO 브릭은 코드의 조각을 나타내고, 지침서는 그들을 어떻게 조립할지 알려줍니다. 자바에서는 모듈이 LEGO зам의 사전 지어진 부분과 같아요 – 특정 기능을 수행하기 위해 관련된 코드의 모음입니다.

기술적으로 看, 자바의 모듈은 다음을 포함하는 자체 포함된 코드 단위입니다 :

  1. 클래스와 인터페이스
  2. 자원(예: 이미지나 구성 파일)
  3. 다른 모듈에서 필요한 것에 대한 명확한 정의
  4. 다른 모듈에 제공하는 것에 대한 선언

이를 잘 조직된 도구箱으로 생각해 보세요. 모든 것이 자신의 자리와 목적을 가지고 있습니다.

자바 모듈 시스템의 기능

자바 모듈 시스템은 자바 9에서 도입되었으며, 여러 기쁜 기능을 제공합니다. 하나씩 살펴보겠습니다 :

1. 강력한 캡슐화

어릴 때 보물을 보관할 수 있는 비밀 상자가 있었던 기억이 있나요? 모듈은 비슷하게 동작합니다. 여러분은 어떤 코드 부분이 다른 사람에게 보이고, 어떤 부분이 "비밀 보물"인지 결정할 수 있습니다.

module com.myapp.secretbox {
exports com.myapp.secretbox.api;
}

이 예제에서는 com.myapp.secretbox.api 패키지의 클래스만 다른 모듈에 보입니다. 나머지는 감춰집니다!

2. 신뢰할 수 있는 구성

모듈은 다른 모듈에서 필요한 것을 명확하게 선언합니다. 이는 장보러 가기 전에 쇼핑 목록을 만드는 것과 같아요 – 정확히 무엇이 필요한지 알고, 무엇도 잊지 않습니다!

module com.myapp.kitchen {
requires com.myapp.fridge;
requires com.myapp.stove;
}

여기서 우리의 kitchen 모듈은 fridgestove 모듈이 제대로 작동하기 위해 필요하다고 말하고 있습니다.

3. 개선된 성능

모듈을 사용하면 자바는 필요한 코드만 로드할 수 있습니다. 여행을 가기 전에 실제로 입을 것만 골라서 가방에 넣는 것이 아니라, 옷장의 모든 옷을 가져가는 것과는 다릅니다!

모듈 선언

이제 어깨를 들고 우리의 첫 번째 모듈을 만들어 보겠습니다. 소스 코드 디렉토리의 루트에 module-info.java 파일을 만들어 시작하겠습니다.

module com.myapp.greetings {
exports com.myapp.greetings.api;
}

이 간단한 선언은 com.myapp.greetings 이름의 모듈을 만들고, com.myapp.greetings.api 패키지를 다른 모듈에 사용할 수 있게 합니다.

종속 모듈 추가

때로는 우리의 모듈이 다른 모듈의 코드를 사용해야 할 수 있습니다. 이러한 종속성은 requires 키워드를 사용하여 지정할 수 있습니다.

module com.myapp.greetings {
requires com.myapp.translations;
exports com.myapp.greetings.api;
}

이 예제에서는 우리의 greetings 모듈이 translations 모듈을 제대로 작동하기 위해 필요하다고 합니다.

선택적 모듈 추가

무엇을 만약 우리에게는 좋지만 필수적이지 않은 모듈이 있을까요? 이럴 때 선택적 모듈이 매우 유용합니다!

module com.myapp.greetings {
requires com.myapp.translations;
requires static com.myapp.fancyfonts;
exports com.myapp.greetings.api;
}

static 키워드는 fancyfonts 모듈이 선택적임을 알려줍니다. 우리의 greetings 모듈은 그것 없이도 작동하지만, fancyfonts가 있으면 사용할 수 있습니다.

전이 모듈 추가

때로는 우리가 종속된 모듈에게 우리의 종속성을 전달하고 싶을 수 있습니다. 이를 위해 transitive 키워드를 사용할 수 있습니다.

module com.myapp.greetings {
requires transitive com.myapp.translations;
exports com.myapp.greetings.api;
}

이제 com.myapp.greetings를 요구하는 모든 모듈은 자동으로 com.myapp.translations에 접근할 수 있습니다.

공개 클래스 내보내기

어떤 패키지를 다른 모듈에 사용할 수 있게 할 때, 우리는 exports 키워드를 사용합니다.

module com.myapp.greetings {
exports com.myapp.greetings.api;
exports com.myapp.greetings.utils to com.myapp.testing;
}

이 예제에서는 우리가 api 패키지를 모든 모듈에 사용할 수 있게 하고 있지만, utils 패키지는 com.myapp.testing 모듈에만 사용할 수 있습니다.

반휘가사 허용

때로는 다른 모듈이 우리의 클래스에 반휘가사를 사용할 수 있도록 허용해야 할 수 있습니다. 이를 위해 opens 키워드를 사용할 수 있습니다.

module com.myapp.greetings {
exports com.myapp.greetings.api;
opens com.myapp.greetings.internal to com.myapp.testing;
}

이것은 com.myapp.testing 모듈이 com.myapp.greetings.internal 패키지의 클래스에 반휘가사를 사용할 수 있게 합니다.

자바 모듈 생성 및 사용

이제 기본 사항을 다루었으니, 이를 모두 통합하여 간단한 모듈형 응용 프로그램을 만들어 보겠습니다. 두 개의 모듈을 만들어 보겠습니다 : com.myapp.greetingscom.myapp.main.

먼저, com.myapp.greetings 모듈을 생성해 보겠습니다 :

// module-info.java
module com.myapp.greetings {
exports com.myapp.greetings;
}

// com/myapp/greetings/Greeter.java
package com.myapp.greetings;

public class Greeter {
public static String greet(String name) {
return "Hello, " + name + "!";
}
}

이제 우리의 greetings 모듈을 사용하는 com.myapp.main 모듈을 생성해 보겠습니다 :

// module-info.java
module com.myapp.main {
requires com.myapp.greetings;
}

// com/myapp/main/Main.java
package com.myapp.main;

import com.myapp.greetings.Greeter;

public class Main {
public static void main(String[] args) {
System.out.println(Greeter.greet("Java Modules"));
}
}

이 모듈형 응용 프로그램을 컴파일하고 실행하기 위해 다음 명령어를 사용합니다 :

javac -d mods --module-source-path src $(find src -name "*.java")
java --module-path mods -m com.myapp.main/com.myapp.main.Main

그리고 바로! 여러분은 여태껏 첫 번째 모듈형 자바 응용 프로그램을 만들고 실행했습니다.

결론

자바의 모듈 시스템에 대한 이 소개를 완료해 주셔서 축하드립니다! 우리는 모듈이 무엇인지 이해하기부터 실제 응용 프로그램에서 생성하고 사용하는 것까지 많은 곳을 다녀왔습니다. 기억해 주세요, 자전거를 타는 것처럼 모듈을 마스터하기 위해서는 연습이 필요합니다. 실험하고 실수를 만들지 마세요 – 그게 우리가 가장 잘 배우는 방법입니다!

여러분이 자바 여행을 계속할 때, 모듈을 사용하면 더 깔끔하고 안전하고 효율적인 응용 프로그램을 만들 수 있게 될 것입니다. 이들은 여러분의 코딩 기술을 좋은 것에서 위대한 것으로 만드는 비밀 요리입니다.

코딩을 계속하고, 계속 배우며, 가장 중요한 것은 즐기세요! 다음에 뵙는다면, 즐겁게 모듈화하세요!

Credits: Image by storyset