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) |
๋น๋ ์๋ | ์๋์ ์ผ๋ก ๋๋ฆผ | ๋น ๋ฆ (์ฆ๋ถ ๋น๋ ์ง์) |
์ ์ฐ์ฑ | ์ ํ์ | ๋์ |
ํ์ต ๊ณก์ | ์ฌ์ | ๋ค์ ๋ณต์ก |
์ฌ์ฉ ์ฌ๋ก | ์ค์๊ท๋ชจ ํ๋ก์ ํธ | ๋๊ท๋ชจ ํ๋ก์ ํธ |




