๐พ [CS] ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)์ ํ๋ ์์ํฌ(Framework)์ ์ฐจ์ด์ .
๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library) ์ ํ๋ ์์ํฌ(Framework) ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํ ๋๊ตฌ์ด์ง๋ง, ๋ ์ฌ์ด์๋ ์ค์ํ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
์ด ์ฐจ์ด์ ์ ์ ์ด ํ๋ฆ๊ณผ ์ฌ์ฉ ๋ฐฉ์์์ ์ฃผ๋ก ๋ํ๋ฉ๋๋ค.
1๏ธโฃ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)
๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library) ๋ ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ๋ชจ๋ ๋๋ ํจ์๋ค์ ๋ชจ์์ผ๋ก, ๊ฐ๋ฐ์๊ฐ ํ์ํ ๋ ์ ํ์ ์ผ๋ก ํธ์ถํ์ฌ ์ฌ์ฉํ๋ ๋๊ตฌ์ ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ ์ฝ๋์์ ํ์ํ ๋ถ๋ถ๋ง ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ ์ด๊ถ์ ๊ฐ๋ฐ์์๊ฒ ์์ต๋๋ค.
-
์ ์ด ํ๋ฆ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋๋ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๋ฐฉ์์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
- ์ฆ, ๊ฐ๋ฐ์๊ฐ ์ฃผ๋์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ ํ์ํ ๊ธฐ๋ฅ๋ง ๊ฐ์ ธ๋ค ์๋๋ค.
-
์ ์ฐ์ฑ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋จ์ํ ๋๊ตฌ๋ก ํน์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ๊ฐ๋ฐ์๋ ์์ ๋กญ๊ฒ ์ค๊ณ์ ๊ตฌ์กฐ๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์์: Java์ Controller
๋ผ์ด๋ธ๋ฌ๋ฆฌ
import java.util.Collections;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> list = List.of("Apple", "Banana", "Orange");
Collections.sort(list);
}
}
- ์ ์ฝ๋์์
Collections.sort()
๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ก, ๊ฐ๋ฐ์๊ฐ ํ์ํ ๋ ํธ์ถํ์ฌ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค.
์ฃผ์ ํน์ง.
- ๊ฐ๋ฐ์๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ ๊ธฐ๋ฅ์ ์ ํํด์ ํธ์ถ.
- ์ฝ๋์ ์ ์ด ํ๋ฆ์ ๊ฐ๋ฐ์๊ฐ ๊ด๋ฆฌ.
- ์ ์ฐํ๊ณ ์ ํ์ด ์ ์.
- ํน์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์์ ๋จ์์ ์ฝ๋ ์งํฉ.
2๏ธโฃ ํ๋ ์์ํฌ(Framework)
ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ์ ์ ์ด ํ๋ฆ์ ๋ฏธ๋ฆฌ ์ ํด ๋์ ์ผ์ข ์ ๋ผ๋ ๋๋ ํ์ ๋๋ค.
๊ฐ๋ฐ์๋ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ๊ตฌ์กฐ์ ๋ง์ถฐ ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ, ์ ์ด ํ๋ฆ์ ํ๋ ์์ํฌ์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค.
์ฆ, ํ๋ ์์ํฌ๊ฐ ๊ฐ๋ฐ์์ ์ฝ๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
-
์ ์ด ์ญ์ (Inversion of Control, IoC)
- ํ๋ ์์ํฌ๋ ์ฝ๋์ ํ๋ฆ์ ์ค์ค๋ก ์ ์ดํ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ ํ์ํ ์์ ์ ํ๋ ์์ํฌ์ ์ํด ํธ์ถ๋ฉ๋๋ค.
- ์ด๋ฅผ ์ ์ด์ ์ญ์ ์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
- ํ๋ ์์ํฌ๋ ์ฝ๋์ ํ๋ฆ์ ์ค์ค๋ก ์ ์ดํ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ ํ์ํ ์์ ์ ํ๋ ์์ํฌ์ ์ํด ํธ์ถ๋ฉ๋๋ค.
-
์ค๊ณ ํจํด ์ ๊ณต
- ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ ๊ตฌ์กฐ์ ์ค๊ณ ํจํด์ ์ ๊ณตํฉ๋๋ค.
- ๊ฐ๋ฐ์๋ ๊ทธ ๊ตฌ์กฐ์ ๋ง์ถฐ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
- ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ ๊ตฌ์กฐ์ ์ค๊ณ ํจํด์ ์ ๊ณตํฉ๋๋ค.
์์: Spring ํ๋ ์์ํฌ.
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
- ์ ์ฝ๋๋ Spring ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ์์์
๋๋ค.
- ์ฌ๊ธฐ์
@RestController
์@GetMapping
๊ฐ์ ์๋ํ ์ด์ ์ ํตํด HTTP ์์ฒญ์ด ํ๋ ์์ํฌ์ ์ํด ์๋์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ, ์ ์ด ํ๋ฆ์ Spring ํ๋ ์์ํฌ๊ฐ ๋ด๋นํฉ๋๋ค.
- ์ฌ๊ธฐ์
์ฃผ์ ํน์ง.
- ํ๋ ์์ํฌ๊ฐ ์ ์ด ํ๋ฆ์ ๊ด๋ฆฌํ๊ณ , ๊ฐ๋ฐ์์ ์ฝ๋๋ฅผ ํธ์ถ.
- ์ผ์ ํ ๊ตฌ์กฐ์ ์ค๊ณ ํจํด์ ์ ๊ณตํ์ฌ ํต์ผ๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ์ ์งํ.
- ์ ์ด ์ญ์ (Inversion of Control, IoC)์ ํตํด ํ๋ ์์ํฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ์ฃผ๋.
- ๋ ํฐ ๊ตฌ์กฐ์ ํ์ ์ ๊ณตํ๋ฉฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณด๋ค ๋ ๊ฐ๋ ฅํ ์ ์ฝ๊ณผ ๊ท์น์ด ์ ์ฉ๋จ.
3๏ธโฃ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์ฐจ์ด์ ์์ฝ.
๊ตฌ๋ถ | ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library) | ํ๋ ์์ํฌ(Framework) |
---|---|---|
์ ์ด ํ๋ฆ | ๊ฐ๋ฐ์๊ฐ ์ฝ๋์ ํ๋ฆ์ ์ ์ด | ํ๋ ์์ํฌ๊ฐ ์ฝ๋์ ํ๋ฆ์ ์ ์ด(์ ์ด ์ญ์ , IoC) |
์ฌ์ฉ ๋ฐฉ์ | ํ์์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ํธ์ถ | ํ๋ ์์ํฌ๊ฐ ์ ๊ณตํ๋ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๊ฐ๋ฐ |
์ ์ฐ์ฑ | ๊ฐ๋ฐ์๊ฐ ์ค๊ณ์ ๊ตฌ์กฐ๋ฅผ ์์ ๋กญ๊ฒ ์ ํ | ํ๋ ์์ํฌ๊ฐ ์ค๊ณ์ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ |
์ฑ ์ ๋ถ๋ฐฐ | ํน์ ๊ธฐ๋ฅ๋ง ์ ๊ณต | ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ๋ฅผ ์ ์ |
๊ท๋ชจ | ์์ ๋ชจ๋์ด๋ ํจ์๋ค์ ์งํฉ | ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ํฐ ํ์ ์ ๊ณต |
์์ | Java์ Collection
|
Spring |
4๏ธโฃ ์ ์ด์ ์ญ์ (Inversion of Control, IoC).
์ ์ด์ ์ญ์ ์ ํ๋ ์์ํฌ์ ์ค์ํ ํน์ง ์ค ํ๋์
๋๋ค.
์ ์ด์ ์ญ์ ์ด๋, ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ดํ๋ ๊ฒ์ด ์๋๋ผ, ํ๋ ์์ํฌ๊ฐ ์ ์ด๋ฅผ ๋ด๋นํ๋ค๋ ๊ฐ๋
์
๋๋ค.
๊ฐ๋ฐ์๋ ํ๋ ์์ํฌ๊ฐ ์์ฒญํ ๋ ์คํ๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ฟ, ์ ์ฒด์ ์ธ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ํ๋ ์์ํฌ๊ฐ ๋ด๋นํฉ๋๋ค.
์ ์ด ์ญ์ ์ ์์
-
๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)
- ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์๋ฅผ ํธ์ถํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
-
ํ๋ ์์ํฌ(Framework)
- ํ๋ ์์ํฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋ฆ์ ์ ์ดํ๊ณ , ํ์ํ ์์ ์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํธ์ถํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ํ๋ ์์ํฌ๊ฐ ํด๋น ์์ฒญ์ ์ ์ ํ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํฉ๋๋ค.
- ํ๋ ์์ํฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋ฆ์ ์ ์ดํ๊ณ , ํ์ํ ์์ ์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํธ์ถํฉ๋๋ค.
5๏ธโฃ ๊ฒฐ๋ก .
-
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํน์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋๊ตฌ๋ก์, ๊ฐ๋ฐ์๊ฐ ํ์ํ ๋ ํธ์ถํ์ฌ ์ฌ์ฉํ๋ ๋ฐ๋ฉด, ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ์ ์ ์ด ํ๋ฆ์ ๊ด๋ฆฌํ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํ๋ ์์ํฌ๊ฐ ์ ์ ํ ์์ ์ ํธ์ถํฉ๋๋ค.
-
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋๋ ๋ ์ ์ฐํ๊ณ , ํน์ ๊ธฐ๋ฅ์ ์ง์ค๋ ๋๊ตฌ์ธ ๋ฐ๋ฉด, ํ๋ ์์ํฌ๋ ์ ์ด์ ์ญ์ ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ฉฐ, ๋ ํฐ ํ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌํ๊ณ ๊ฐ๋ฐํ๋ ๋ฐ ๋์์ ์ค๋๋ค.