Search

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€?

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ์œผ๋กœ, ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ ๋„ ํšจ์œจ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฃผ์š” ํŠน์ง•

โ€ข
์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ: ์ด๋ฏธ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
์•ˆ์ •์„ฑ: ๊ฒ€์ฆ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ„๊ทธ๋ฅผ ์ค„์ด๊ณ  ์•ˆ์ •์ ์ธ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ: ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ํ•ต์‹ฌ ๋กœ์ง ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
ํ‘œ์ค€ํ™”: ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ˜•ํƒœ

โ€ข
JAR ํŒŒ์ผ (Java Archive): ์ปดํŒŒ์ผ๋œ Java ํด๋ž˜์Šค ํŒŒ์ผ๋“ค์„ ์••์ถ•ํ•œ ํŒŒ์ผ ํ˜•์‹์ž…๋‹ˆ๋‹ค.
โ€ข
ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: Java์— ๊ธฐ๋ณธ์œผ๋กœ ํฌํ•จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์˜ˆ: java.util, java.io)
โ€ข
์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: ์ œ3์ž๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์˜ˆ: Apache Commons, Google Guava)

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ์˜ˆ์‹œ

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ:
import java.util.ArrayList; import java.util.List; public class Example { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Java"); list.add("Library"); System.out.println(list); } }
Java
๋ณต์‚ฌ
์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ (์˜ˆ: Apache Commons):
import org.apache.commons.lang3.StringUtils; public class Example { public static void main(String[] args) { String text = " Hello World "; String trimmed = StringUtils.trim(text); System.out.println(trimmed); } }
Java
๋ณต์‚ฌ

์ดํด๋ฆฝ์Šค์—์„œ ํ”„๋กœ์ ํŠธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

์™ธ๋ถ€ JAR ํŒŒ์ผ ์ถ”๊ฐ€ํ•˜๊ธฐ

1.
ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
2.
Build Path โ†’ Configure Build Path๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
3.
Libraries ํƒญ์—์„œ Add External JARs ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
4.
์ถ”๊ฐ€ํ•˜๋ ค๋Š” JAR ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ณ  ์—ด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
5.
Apply and Close๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋” ์‚ฌ์šฉํ•˜๊ธฐ

1.
ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์— lib ํด๋”๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
2.
ํ•„์š”ํ•œ JAR ํŒŒ์ผ์„ lib ํด๋”์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
3.
ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
4.
Build Path โ†’ Configure Build Path๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
5.
Libraries ํƒญ์—์„œ Add JARs ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
6.
ํ”„๋กœ์ ํŠธ ๋‚ด์˜ lib ํด๋”์—์„œ JAR ํŒŒ์ผ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
7.
Apply and Close๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ๋„๊ตฌ๋ž€?

๋นŒ๋“œ ๋„๊ตฌ(Build Tool)๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ , ํ…Œ์ŠคํŠธํ•˜๊ณ , ํŒจํ‚ค์ง•ํ•˜์—ฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๊ณ , ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ผ๊ด€๋œ ๋นŒ๋“œ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ ๋„๊ตฌ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

โ€ข
์ปดํŒŒ์ผ: ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋‚˜ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์˜์กด์„ฑ ๊ด€๋ฆฌ: ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํ…Œ์ŠคํŠธ ์ž๋™ํ™”: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํŒจํ‚ค์ง•: ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ JAR, WAR ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ํŒจํ‚ค์ง•ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๋ฐฐํฌ: ๋นŒ๋“œ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„œ๋ฒ„๋‚˜ ์ €์žฅ์†Œ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

Java์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ

โ€ข
Maven: XML ๊ธฐ๋ฐ˜์˜ ์„ค์ • ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ‘œ์ค€ํ™”๋œ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
โ€ข
Gradle: Groovy ๋˜๋Š” Kotlin DSL์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์œ ์—ฐํ•˜๊ณ  ๋น ๋ฅธ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
Ant: XML ๊ธฐ๋ฐ˜์˜ ์˜ค๋ž˜๋œ ๋นŒ๋“œ ๋„๊ตฌ๋กœ, ํ˜„์žฌ๋Š” ๋œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Maven

Maven์ด๋ž€?

Maven์€ Apache์—์„œ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ, ๋นŒ๋“œ ์ž๋™ํ™”, ์˜์กด์„ฑ ๊ด€๋ฆฌ, ํ”„๋กœ์ ํŠธ ์ •๋ณด ๊ด€๋ฆฌ ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. pom.xml ํŒŒ์ผ์„ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Maven ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

1.
์ดํด๋ฆฝ์Šค์—์„œ File โ†’ New โ†’ Maven Project๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
2.
Create a simple project๋ฅผ ์ฒดํฌํ•˜๊ณ  Next๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
3.
Group Id์™€ Artifact Id๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Finish๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ

1.
ํ”„๋กœ์ ํŠธ์˜ pom.xml ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
2.
<dependencies> ํƒœ๊ทธ ๋‚ด์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์‹œ:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.10</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies>
XML
๋ณต์‚ฌ
1.
ํŒŒ์ผ์„ ์ €์žฅํ•˜๋ฉด Maven์ด ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

Maven ์ฃผ์š” ๋ช…๋ น์–ด

๋ช…๋ น์–ด
์„ค๋ช…
mvn clean
๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ ์‚ญ์ œ
mvn compile
์†Œ์Šค ์ฝ”๋“œ ์ปดํŒŒ์ผ
mvn test
ํ…Œ์ŠคํŠธ ์‹คํ–‰
mvn package
JAR/WAR ํŒŒ์ผ ์ƒ์„ฑ
mvn install
๋กœ์ปฌ ์ €์žฅ์†Œ์— ์„ค์น˜

Gradle

Gradle์ด๋ž€?

Gradle์€ Groovy ๋˜๋Š” Kotlin DSL์„ ์‚ฌ์šฉํ•˜๋Š” ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Maven๋ณด๋‹ค ๋น ๋ฅด๊ณ  ์œ ์—ฐํ•˜๋ฉฐ, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. build.gradle ํŒŒ์ผ์„ ํ†ตํ•ด ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Gradle ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

1.
์ดํด๋ฆฝ์Šค์—์„œ File โ†’ New โ†’ Gradle Project๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
2.
ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  Next๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
3.
ํ•„์š”ํ•œ ์„ค์ •์„ ํ™•์ธํ•˜๊ณ  Finish๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ

1.
ํ”„๋กœ์ ํŠธ์˜ build.gradle ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
2.
dependencies ๋ธ”๋ก ๋‚ด์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์‹œ:
dependencies { implementation 'org.springframework:spring-core:5.3.10' testImplementation 'junit:junit:4.13.2' // ๋˜๋Š” ์ตœ์‹  ๋ฒ„์ „ implementation 'com.google.guava:guava:31.0.1-jre' }
Groovy
๋ณต์‚ฌ
1.
ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
2.
Gradle โ†’ Refresh Gradle Project๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

Gradle ์ฃผ์š” ๋ช…๋ น์–ด

๋ช…๋ น์–ด
์„ค๋ช…
gradle clean
๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ ์‚ญ์ œ
gradle build
ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ
gradle test
ํ…Œ์ŠคํŠธ ์‹คํ–‰
gradle run
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
gradle dependencies
์˜์กด์„ฑ ํŠธ๋ฆฌ ํ™•์ธ

Gradle Wrapper ์‚ฌ์šฉํ•˜๊ธฐ

Gradle Wrapper๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Gradle์„ ๋ณ„๋„๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
Windows: gradlew build
โ€ข
macOS/Linux: ./gradlew build

Maven vs Gradle ๋น„๊ต

ํŠน์ง•
Maven
Gradle
์„ค์ • ํŒŒ์ผ
pom.xml (XML)
build.gradle (Groovy/Kotlin)
๋นŒ๋“œ ์†๋„
์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ
๋น ๋ฆ„ (์ฆ๋ถ„ ๋นŒ๋“œ ์ง€์›)
์œ ์—ฐ์„ฑ
์ œํ•œ์ 
๋†’์Œ
ํ•™์Šต ๊ณก์„ 
์‰ฌ์›€
๋‹ค์†Œ ๋ณต์žก
์‚ฌ์šฉ ์‚ฌ๋ก€
์ค‘์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ
๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ
์ฐธ๊ณ : ์ตœ๊ทผ์—๋Š” Gradle์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํŠนํžˆ Android ๊ฐœ๋ฐœ์—์„œ๋Š” Gradle์ด ๊ธฐ๋ณธ ๋นŒ๋“œ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.