강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kamser
kamser

câu hỏi đã được viết

Từ Java 9 đến Java 21

Bài 1. Java 9 và Hệ thống module nền tảng Java

JPMS을 사용하면 빌드 툴 없이 모듈 구성이 가능하다

Đã giải quyết

Viết

·

236

0

강사님 안녕하세요 !

자바 9 모듈 학습을 하다가 의문점이 생겨서 질문을 드립니다.

JPMS을 사용하면 빌드 툴 없이 모듈 구성이 가능하다라는 말이 잘 이해가 되지 않습니다.

plugins {
    id 'java-library'
}

group = 'com.example'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    api(project(":domain"))
    testImplementation platform('org.junit:junit-bom:5.10.0')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

test {
    useJUnitPlatform()
}


이렇게 build.gradle 파일 내에 추가로 설정을 해야 접근이 가능하게 되는데 이거는 gradle 빌드를 사용한게 아닌건가요 ?

testImplementation platform('org.junit:junit-bom:5.10.0')

이렇게 maven을 통해서 가져오는 게 아니라서 빌드툴을 사용하지 않았다고 이해하면 될까요?

java

Câu trả lời 1

1

lannstark님의 프로필 이미지
lannstark
Người chia sẻ kiến thức

안녕하세요! kamser님! 🙂

정말 좋은 질문 감사드립니다.

 

결론부터 말씀드리면, build.gradle 를 사용하게 되면 빌드 툴을 사용한게 맞습니다!

제가 말씀드린 "JPMS를 사용하면 빌드 툴 없이 모듈 구성이 가능하다"는 의미는 다음과 같은 의미에 가깝습니다! 🙂

  • 빌드툴을 사용하지 않는다고 가정하면, JPMS가 있기 전에는 두 jar 파일을 classpath에 인식시켜 놓는 것만으로도 서로 클래스를 가져다 사용할 수 있었습니다.

    • (역설적으로 빌드 툴은 각각의 모듈이 서로 인식할 수 있도록 물리적인 위치를 조정해주는 역할을 자동으로 해주죠! 👍)

  • 하지만 빌드툴을 사용하게 되면, JPMS를 이용해 서로 다른 두 jar 간의 다양한 관계를 설정하거나, 하위 jar 안의 어떤 패키지만을 노출할지 정할 수 있습니다.

 

jdk를 예로 보시면 편합니다!

https://github.com/openjdk/jdk

jdk에서는 gradle이나 maven 같은 빌드 툴을 사용하고 있지 않지만, 각각의 모듈을 module-info.java로 설정해준 덕분에 모듈 시스템을 적절히 이용할 수 있게 되었죠.

물론 Makefile이 물리적인 연결을 도와주고는 있습니다. 👍

 

 

물론 현실적으로 애플리케이션 개발자 입장에서는 빌드툴을 사용하지 않을 일이 거의 없다고 보시면 됩니다!

다만 JDK 입장에서는 JPMS의 등장이 조금 더 큰 의미를 갖는다 라는 느낌으로 봐주시면 될 것 같습니다.

 

또 궁금하신 점 생기시면 언제든 편하게 질문 남겨주세요.

감사합니다! 🙏

kamser님의 프로필 이미지
kamser
Người đặt câu hỏi

감사합니다 !!

자바 프로젝트를 진행하면서 자바 21까지 자바의 feature에 대해 학습이 필요했었습니다.

너무 좋은 강의 감사합니다.

Hình ảnh hồ sơ của kamser
kamser

câu hỏi đã được viết

Đặt câu hỏi