๐น chap1. ์๋ฐ 8, 9, 10, 11 : ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋๊ฐ?
JDK(Java Development Kit) ์๋ฐ ๊ฐ๋ฐ ํคํธ
1.1 ์ญ์ฌ์ ํ๋ฆ์ ๋ฌด์์ธ๊ฐ?
1
2
3
4
5
6
// ์ฌ๊ณผ ๋ชฉ๋ก์ ๋ฌด๊ฒ์์ผ๋ก ์ ๋ ฌ
Collections.sort(inventory, new Comparator<Apple>() {
public int compare(Apple a1, Apple a2) {
return a1.getWeight().compareTo(a2.getWeight());
}
});
์๋ฐ8์ ์ด์ฉํ๋ฉด ์์ ์ฝ๋๋ฅผ ์์ฐ์ด์ ๋ ๊ฐ๊น๊ฒ ๊ฐ๋จํ ๋ฐฉ์์ผ๋ก ์ฝ๋ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
1
inventory.sort(comparing(Apple::getWeight));
์๋ฐ๋ ๋ณ๋ ฌ ์คํ ํ๊ฒฝ์ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ์๋ฌ๊ฐ ๋ ๋ฐ์ํ๋ ๋ฐฉํฅ์ผ๋ก ์งํํ๋ ค ๋ ธ๋ ฅํ๋ค.
- ์๋ฐ 1.0: ์ค๋ ๋, ๋ฝ, ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ ์ง์
- ์ด์ ๊ฐ์ ์ ์์ค ๊ธฐ๋ฅ์ ์จ์ ํ ํ์ฉํ๊ธฐ๋ ์ด๋ ค์ ์
- ์๋ฐ 5: ์ค๋ ๋ ํ, ๋ณ๋ ฌ ์คํ ์ปฌ๋ ์ ๋ฑ ๊ฐ๋ ฅํ ๋๊ตฌ ๋์
- ์๋ฐ 7: ๋ณ๋ ฌ ์คํ์ ๋์์ ์ค ์ ์๋ ํฌํฌ/์กฐ์ธ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณต
- ํ์ง๋ง ์ฌ์ ํ ๊ฐ๋ฐ์๊ฐ ํ์ฉํ๊ธฐ ์ฝ์ง ์์์
ํ์ ์ ์๋ฐ8
์๋ฐ 8์ ๊ฐ๊ฒฐํ ์ฝ๋, ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์์ ์ฌ์ด ํ์ฉ์ด๋ผ๋ ๋ ๊ฐ์ง ์๊ตฌ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ํจ
์๋ฐ 8์์ ์ ๊ณตํ๋ ์๋ก์ด ๊ธฐ์
- ์คํธ๋ฆผ API
- ๋ฉ์๋์ ์ฝ๋๋ฅผ ์ ๋ฌํ๋ ๊ธฐ๋ฒ
- ์ธํฐํ์ด์ค์ ๋ํดํธ ๋ฉ์๋
[ ์คํธ๋ฆผ ]
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ง์ ์ธ์ด์์ ํํ์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ฒ๋ผ ๋ณ๋ ฌ ์ฐ์ฐ์ ์ง์ํ๋ ์คํธ๋ฆผ์ด๋ผ๋ ์๋ก์ด API ์ ๊ณต
SQL์์ ๊ณ ์์ค ์ธ์ด๋ก ์ํ๋ ๋์์ ํํํ๋ฉด, ๊ตฌํ์์ ์ต์ ์ ์ ์์ค ์คํ๋ฐฉ๋ฒ์ ์ ํํ๋ ๋ฐฉ์์ผ๋ก ๋์ํจ
โ ์คํธ๋ฆผ์ ์ด์ฉํ๋ฉด synchronized ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค!
(synchronized: ์๋ฌ ์์ฃผ ๋ฐ์, ๋ฉํฐ์ฝ์ด CPU๋ฅผ ์ด์ฉํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น์ฉ ๋น์)
[ ์คํธ๋ฆผ ๋๋ถ์ ์กด์ฌํ๋ 2๊ฐ์ง ๊ธฐ๋ฅ ]
- ์ฝ๋๋ฅผ ์ ๋ฌํ๋ ๊ฐ๊ฒฐ ๊ธฐ๋ฒ(๋ฉ์๋ ์ฐธ์กฐ์ ๋๋ค)
์ฝ๊ฐ๋ง ๋ค๋ฅธ ๋ ๋ฉ์๋๋ฅผ ์ธ์๋ฅผ ์ด์ฉํด ๋ค๋ฅธ ๋์์ ํ๋๋ก ํ๋์ ๋ฉ์๋๋ก ํฉ์น๋ค.
โ ํ๋ก๊ทธ๋จ์ด ์งง๊ณ ๊ฐ๊ฒฐํด์ง๊ณ , ๋ถํ์ํ ์๋ฌ๋ ์ค์ผ ์ ์๋ค.
- ์ธํฐํ์ด์ค์ ๋ํดํธ ๋ฉ์๋ ์กด์ฌ
์๋ฐ8 ๊ธฐ๋ฒ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ์๋ ฅ์ ๋ฐํํ๋ค.
1.2 ์ ์์ง๋ ์๋ฐ๋ ๋ณํํ๋๊ฐ?
- C, C++
- ํ๋ก๊ทธ๋๋ฐ ์์ ์ฑ์ ๋ถ์กฑํ์ง๋ง ์์ ๋ฐํ์ ํํ๋ฆฐํธ ๋๋ถ์ ์ด์์ฒด์ ์ ๋ค์ํ ์๋ฒ ๋๋ ์์คํ ์์ ์ฌ์ ํ ์ธ๊ธฐ
- ๋ฎ์ ์์ ์ฑ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ด ์๊ธฐ์น ์๊ฒ ์ข ๋ฃ๋๊ฑฐ๋ ๋ฐ์ด๋ฌ์ค ๋ฑ์ด ์นจํฌํ ์ ์๋ ๋ณด์ ๊ตฌ๋ฉ์ด ์์ ์ ์์
โ ๋ฐํ์ ํํ๋ฆฐํธ์ ์ฌ์ ๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์๋ฐ, C# ๊ฐ์ด ์์ ํ ํ์์ ์ธ์ด๊ฐ C, C++๋ฅผ ์๋ํจ
1.2.1 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ํ๊ณ์์ ์๋ฐ์ ์์น
[ ์๋ฐ์ ์์ ]
- ์ฒ์๋ถํฐ ๋ง์ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๋ ์ ์ค๊ณ๋ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก ์์
- ์ฒ์๋ถํฐ ์ค๋ ๋์ ๋ฝ์ ์ด์ฉํ ์์ํ ๋์์ฑ๋ ์ง์
- ์ฝ๋๋ฅผ JVM ๋ฐ์ดํธ ์ฝ๋๋ก ์ปดํ์ผํ๋ ํน์ง(๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๊ฐ์ ๋จธ์ ์ฝ๋๋ฅผ ์ง์) ๋๋ฌธ์ ์๋ฐ๋ ์ธํฐ๋ท ์ ํ๋ฆฟ ํ๋ก๊ทธ๋จ์ ์ฃผ์ ์ธ์ด๊ฐ ๋์๋ค.
[ ์๋ฐ๋ ์ด๋ป๊ฒ ๋์ค์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ฑ์ฅํ๋๊ฐ? ]
- ๊ฐ์ฒด์งํฅ์ ๊ฐ๊ด
- ์บก์ํ ๋๋ถ์ C์ ๋นํด ์ํํธ์จ์ด ์์ง๋์ด๋ง์ ์ธ ๋ฌธ์ ๊ฐ ํจ์ฌ ์ ์
- ๊ฐ์ฒด์งํฅ์ ์ ์ ์ ์ธ ๋ชจ๋ธ ๋๋ถ์ ์๋์ฐ 95 ๋ฐ ๊ทธ ์ดํ์ WIMP ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ฝ๊ฒ ๋์ํ ์ ์์
โ โ๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด๋คโ๋ก ์์ฝํ ์ ์๋ค.
[ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ํ๊ณ์ ๋ณํ์ ๋ฐ๋ ]
ํ๋ก๊ทธ๋๋จธ๋ ๋น ๋ฐ์ดํฐ(TB ์ด์์ ๋ฐ์ดํฐ์ )์ ๋์ ํ๋ฉด์ ๋ฉํฐ์ฝ์ด ์ปดํจํฐ๋ ์ปดํจํฐ ํด๋ฌ์คํ ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ํ์์ฑ์ด ์ปค์ก๊ณ , ๋ณ๋ ฌ ํ๋ก์ธ์ฑ์ ํ์ฉํด์ผ ํ๋๋ฐ ์ง๊ธ๊น์ง์ ์๋ฐ๋ก๋ ์ถฉ๋ถํ ๋์ํ ์ ์์๋ค .
์๋ฐ 8์ ๋ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ๋๊ตฌ, ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ๋ฌธ์ ๋ฅผ ๋ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ ์ง๋ณด์ํ ์ ์๋ค๋ ์ฅ์ ์ ์ ๊ณตํ๋ค.
์๋ฐ8, ์๋ฐ9์์๋ ์ธ๋ถ์ ํฐ ํ์์์คํ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๋ค๋ฅธ ๋ฒค๋๊ฐ ๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด ๊ฐ๋ฐํ๋ ์ฌ๋ก๊ฐ ๋๊ณ ์๊ณ , ์ด๋ฐ ์ค๊ณ ์คํ์ผ์ ์ ์ฉํ ์ ์๋๋ก ๋ํดํธ ๋ฉ์๋์ ๋ชจ๋์ ์ ๊ณตํ๋ค.
1.2.2 ์คํธ๋ฆผ ์ฒ๋ฆฌ
์คํธ๋ฆผ: ํ ๋ฒ์ ํ ๊ฐ์ฉ ๋ง๋ค์ด์ง๋ ์ฐ์์ ์ธ ๋ฐ์ดํฐ ํญ๋ชฉ๋ค์ ๋ชจ์
[ ์คํธ๋ฆผ ํจํค์ง ]
- ์๋ฐ 8์๋ java.util.stream ํจํค์ง์ ์คํธ๋ฆผ API๊ฐ ์ถ๊ฐ๋์๋ค.
- ์คํธ๋ฆผ ํจํค์ง์ ์ ์๋ **Stream
**๋ T ํ์์ผ๋ก ๊ตฌ์ฑ๋ ์ผ๋ จ์ ํญ๋ชฉ์ ์๋ฏธํ๋ค.
[ ์คํธ๋ฆผ API ์ฅ์ ]
- โ์คํธ๋ฆผ API๋ ํ์ดํ๋ผ์ธ์ ๋ง๋๋ ๋ฐ ํ์ํ ๋ง์ ๋ฉ์๋ ์ ๊ณต
- ๊ธฐ์กด์๋ ํ ๋ฒ์ ํ ํญ๋ชฉ์ ์ฒ๋ฆฌํ์ง๋ง ์๋ฐ 8์์๋ ์ฐ๋ฆฌ๊ฐ ํ๋ ค๋ ์์ ์ (๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ์ฒ๋ผ) ๊ณ ์์ค์ผ๋ก ์ถ์ํํด์ ์ผ๋ จ์ ์คํธ๋ฆผ์ผ๋ก ๋ง๋ค์ด ์ฒ๋ฆฌํ ์ ์๋ค.
์คํธ๋ฆผ ํ์ดํ๋ผ์ธ์ ์ด์ฉํด์ ์ ๋ ฅ ๋ถ๋ถ์ ์ฌ๋ฌ CPU ์ฝ์ด์ ์ฝ๊ฒ ํ ๋น ๊ฐ๋ฅ
โ ์ค๋ ๋๋ผ๋ ๋ณต์กํ ์์ ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด์๋ ๊ณต์ง๋ก ๋ณ๋ ฌ์ฑ์ ์ป์ ์ ์๋ค.
1.2.3 ๋์ ํ๋ผ๋ฏธํฐํ๋ก ๋ฉ์๋์ ์ฝ๋ ์ ๋ฌํ๊ธฐ
๋์ ํ๋ผ๋ฏธํฐํ: ๋ฉ์๋(์ฐ๋ฆฌ ์ฝ๋)๋ฅผ ๋ค๋ฅธ ๋ฉ์๋์ ์ธ์๋ก ๋๊ฒจ์ฃผ๋ ๊ธฐ๋ฅ
๋์ ํ๋ผ๋ฏธํฐํ์ ์์
2013UK0001, 2014US0002, โฆ ๋ฑ์ ํ์์ ๊ฐ๋ ์ก์ฅ ID๊ฐ ์๋ค. ์ฒ์ 4๊ฐ์ ์ซ์๋ ์ฐ๋, ๋ค์ ๋ ๊ธ์๋ ๊ตญ๊ฐ ์ฝ๋๋ฅผ, ๋ง์ง๋ง 4๊ฐ์ ์ซ์๋ ๊ณ ๊ฐ ID๋ฅผ ์๋ฏธํ๋ค. ์ด ์ก์ฅ ID๋ฅผ ๊ณ ๊ฐ ID ๋๋ ๊ตญ๊ฐ ์ฝ๋์์ผ๋ก ์ ๋ ฌํด์ผ ํ๋ค. ์ด๋ sort๊ฐ ๊ณ ๊ฐ ID๋ ๊ตญ๊ฐ ์ฝ๋๋ก ์ก์ฅ ID๋ฅผ ์ ๋ ฌํ๋๋ก sort์ ๋ฐ๋ก ์ฝ๋๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
์ก์ฅ ID๋ฅผ ๋น๊ตํ๋ compareUsingCustomerId ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ sort ๋ฉ์๋์ ์ธ์๋ก ์ ๋ฌํด์ค๋ค. ์ด๋ฅผ ๋์ ํ๋ผ๋ฏธํฐํ๋ผ๊ณ ํ๋ค.
1.2.4 ๋ณ๋ ฌ์ฑ๊ณผ ๊ณต์ ๊ฐ๋ณ ๋ฐ์ดํฐ
์๋ก ๋ค๋ฅธ ์ฝ๋๋ฅผ ๋์์ ์คํํ ๋ ์์ ํ๊ฒ ์คํํ ์ ์๋ ์ฝ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ๊ณต์ ๋ ๊ฐ๋ณ ๋ฐ์ดํฐ์ ์ ๊ทผํ์ง ์์์ผ ํ๋ค.
โ ์ด๋ฌํ ํจ์๋ฅผ ์์ ํจ์, ๋ถ์์ฉ ์๋ ํจ์, ์ํ ์๋ ํจ์๋ผ ๋ถ๋ฅธ๋ค.
[ ๋ณ๋ ฌ์ฑ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์ ]
๊ณต์ ๋ ๋ณ์๋ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ๋ณ๋ ฌ์ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์๋ฅผ ๋ค์ด ๋ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ๋ ๋ณ์๋ฅผ ๋์์ ๋ฐ๊พธ๋ ค ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๊ธฐ์กด์ฒ๋ผ synchronized๋ฅผ ์ด์ฉํด์ ๊ณต์ ๋ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ ๊ท์น์ ๋ง๋ค ์ ์์ ๊ฒ์ด๋ค.
โ ์ผ๋ฐ์ ์ผ๋ก synchronized๋ ์์คํ ์ฑ๋ฅ์ ์ ์ํฅ์ ๋ฏธ์นจ
๋ค์ค ํ๋ก์ธ์ฑ ์ฝ์ด์์ synchronized๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ์์ฐจ์ ์ผ๋ก ์คํ๋์ด์ผ ํ๋ฏ๋ก ๋ณ๋ ฌ์ด๋ผ๋ ๋ชฉ์ ์ ๋ฌด๋ ฅํ์ํค๋ฉด์ ํจ์ฌ ๋ ๋น์ผ ๋๊ฐ๋ฅผ ์น๋ฌ์ผ ํ ์ ์๋ค.
์๋ฐ 8 ์คํธ๋ฆผ์ ์ด์ฉํ์ฌ ๊ธฐ์กด์ ์๋ฐ ์ค๋ ๋ API๋ณด๋ค ์ฝ๊ฒ ๋ณ๋ ฌ์ฑ์ ํ์ฉํ ์ ์๋ค.
1.2.5 ์๋ฐ๊ฐ ์งํํด์ผ ํ๋ ์ด์
[ ์๋ฐ์ ์งํ ]
- ์ ๋ค๋ฆญ(generic)์ ๋ฑ์ฅ
- List โ List
- ํ์ ๋ฐํ Iterator ๋์ for-each ๋ฃจํ ์ฌ์ฉ
๊ธฐ์กด ๊ฐ์ ๋ณํ์ํค๋ ๋ฐ ์ง์คํ๋ ๊ณ ์ ์ ์ธ ๊ฐ์ฒด์งํฅ์์ ๋ฒ์ด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ค๊ฐ์ฐ๋ค๋ ๊ฒ์ด ์๋ฐ 8์ ๊ฐ์ฅ ํฐ ๋ณํ๋ค.
[ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ]
- ์ฐ๋ฆฌ๊ฐ ํ๋ ค๋ ์์ ์ด ์ต์ฐ์ ์ ๋๋ฉฐ ๊ทธ ์์ ์ ์ด๋ป๊ฒ ์ํํ๋์ง๋ ๋ณ๊ฐ์ ๋ฌธ์ ๋ก ์ทจ๊ธ
- ์ ํต์ ์ธ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ๋ ์๊ทน
- ์๋ฐ 8์์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋์ ํจ์ผ๋ก์จ ๋ ๊ฐ์ง ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ์ฅ์ ์ ๋ชจ๋ ํ์ฉ
1.3 ์๋ฐ ํจ์
์๋ฐ ํ๋ก๊ทธ๋จ์์ ์กฐ์ํ ์ ์๋ ๊ฐ(์ผ๊ธ ๊ฐ)
- int ํ์, double ํ์ ๋ฑ์ ๊ธฐ๋ณธ ๊ฐ
- ๊ฐ์ฒด(๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ) - ๊ฐ์ฒด ์ฐธ์กฐ๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
- new ๋๋ ํฉํ ๋ฆฌ ๋ฉ์๋ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด์ ๊ฐ์ ์ป์ ์ ์๋ค.
1.3.1 ๋ฉ์๋์ ๋๋ค๋ฅผ ์ผ๊ธ ์๋ฏผ์ผ๋ก
์๋ฐ 8์์๋ ๋ฉ์๋๋ฅผ ๊ฐ์ผ๋ก ์ทจ๊ธํ ์ ์๊ฒ ํ์ฌ ํ๋ก๊ทธ๋๋จธ๋ค์ด ๋ ์ฝ๊ฒ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ ์ ์๋ ํ๊ฒฝ์ด ์ ๊ณต๋๋๋ก ์๋ฐ 8์ ์ค๊ณํจ
[ ๋ฉ์๋ ์ฐธ์กฐ ๊ธฐ๋ฅ ]
ex) ๋๋ ํ ๋ฆฌ์์ ๋ชจ๋ ์จ๊ฒจ์ง ํ์ผ์ ํํฐ๋งํ๋ค.
์์ ์ฝ๋๋ ๊ฐ ํ์ด ๋ฌด์จ ์์ ์ ํ๋์ง ํฌ๋ช ํ์ง ์๋ค. ์ด๋ฏธ isHidden() ์ด๋ผ๋ ๋ฉ์๋๊ฐ ์๋๋ฐ ๊ตณ์ด FileFilter๋ก ๋ณต์กํ๊ฒ ๊ฐ์ผ ํ FileFilter๋ฅผ ์ธ์คํด์คํ ํด์ผํ๋? ์ด๊ฒ์ ์๋ฐ 8์์๋ ์๋ ์ฝ๋๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค
์๋ฐ 8์ ๋ฉ์๋ ์ฐธ์กฐ ::
๋ฅผ ์ด์ฉํ์ฌ listFiles์ ์ง์ ์ ๋ฌํ ์ ์๋ค.
๊ธฐ์กด์ ๋นํด ๋ฌธ์ ์์ฒด๋ฅผ ๋ ์ง์ ์ ์ผ๋ก ์ค๋ช ํ๋ค๋ ์ ์ด ์๋ฐ 8 ์ฝ๋์ ์ฅ์ ์ด๋ค.
์๋ฐ 8์์๋ ๊ธฐ๋ช ๋ฉ์๋์ ๋๋ค ํจ์๋ฅผ ๋ชจ๋ ๊ฐ์ผ๋ก ์ทจ๊ธํ ์ ์๋ค.
1.3.2 ์ฝ๋ ๋๊ฒจ์ฃผ๊ธฐ : ์์
Apple ํด๋์ค์ getColor ๋ฉ์๋๊ฐ ์๊ณ , Apples ๋ฆฌ์คํธ๋ฅผ ํฌํจํ๋ ๋ณ์ inventory๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์.
์ด๋ ๋ชจ๋ ๋ น์ ์ฌ๊ณผ๋ฅผ ์ ํํด์ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๊ณ ์ ํ๋ค.(ํํฐ)
์๋ฐ 8 ์ด์ filterGreenApples
์ฌ๊ณผ ๋ฌด๊ฒ๋ก ํํฐ๋ง ํ๊ณ ์ถ์ ์๋ ์๋ค.
์ฒซ๋ฒ์งธ ์ฝ๋๋ฅผ ๋ณต๋ถํ์ฌ ์ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์๋ค.
์ํํธ์จ์ด๊ณตํ์ ์ธ ๋ฉด์์ ํด๋น ์ฝ๋์ ๋ฒ๊ทธ๊ฐ ์๋ค๋ฉด ๋ณต๋ถํ ๋ชจ๋ ์ฝ๋๋ฅผ ๊ณ ์ณ์ผ ํ๋ค๋ ๋จ์ ์ด ์๋ค.
์๋ฐ 8 ์ดํ
์ฝ๋๋ฅผ ์ธ์๋ก ๋๊ฒจ์ค ์ ์์ผ๋ฏ๋ก filter ๋ฉ์๋๋ฅผ ์ค๋ณต์ผ๋ก ๊ตฌํํ ํ์๊ฐ ์๋ค.
๋ค์์ฒ๋ผ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค.
1.3.3 ๋ฉ์๋ ์ ๋ฌ์์ ๋๋ค๋ก
๋ฉ์๋๋ฅผ ๊ฐ์ผ๋ก ์ ๋ฌํ๋ ๊ฒ์ ์ ์ฉํ์ง๋ง, ํ๋ ๋ฒ๋ง ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ๋งค๋ฒ ์ ์ํ๋ ๊ฒ์ ๊ท์ฐฎ์ ์ผ์ด๋ค.
์๋ฐ 8์์ ๋๋ค(์ต๋ช ํจ์)๋ฅผ ์ฌ์ฉํด ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์๋ค.
์ฆ, ํ ๋ฒ๋ง ์ฌ์ฉํ ๋ฉ์๋๋ ๋ฐ๋ก ์ ์๋ฅผ ๊ตฌํํ ํ์๊ฐ ์๋ค.
ํ์ง๋ง ๋๋ค๊ฐ ๋ช ์ค ์ด์์ผ๋ก ๊ธธ์ด์ง๋ค๋ฉด, ์ต๋ช ๋๋ค๋ณด๋ค๋ ์ฝ๋๊ฐ ์ํํ๋ ์ผ์ ์ ์ค๋ช ํ๋ ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ ๋ฉ์๋ ์ฐธ์กฐ๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค. (์ฝ๋์ ๋ช ํ์ฑ ์ฐ์ )
1.4 ์คํธ๋ฆผ
์ปฌ๋ ์ ์ ์๋ฐ์์ ๋๋ถ๋ถ ๋ง๋ค์ด ํ์ฉํ์ง๋ง, ์ปฌ๋ ์ ์ผ๋ก ๋ชจ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง๋ ์๋๋ค.
์๋ฅผ ๋ค์ด ๋ฆฌ์คํธ์์ ๊ณ ๊ฐ์ ํธ๋์ญ์ (๊ฑฐ๋)๋ง ํํฐ๋งํ ๋ค์์ ํตํ๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋ฃนํํด์ผ ํ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ง์ ๊ธฐ๋ณธ ์ฝ๋๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
๊ฒ๋ค๊ฐ ์ ์์ ์ฝ๋์์ ์ค์ฒฉ๋ ์ ์ด ํ๋ฆ ๋ฌธ์ฅ์ด ๋ง์์ ์ฝ๋๋ฅผ ํ ๋ฒ์ ์ดํดํ๊ธฐ๋ ์ด๋ ต๋ค.
์คํธ๋ฆผ API๋ฅผ ์ด์ฉํ๋ฉด ๋ค์์ฒ๋ผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
์คํธ๋ฆผ API๋ฅผ ์ด์ฉํ๋ฉด ์ปฌ๋ ์ API์๋ ์๋นํ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ปฌ๋ ์ ์์๋ ๋ฐ๋ณต๊ณผ์ ์ ์ง์ ์ฒ๋ฆฌํด์ผ ํ๋ค(for-each ๋ฃจํ๋ฅผ ์ด์ฉํด ๊ฐ ์์ ๋ฐ๋ณต ์์ ). ์ด๋ฅผ ์ธ๋ถ ๋ฐ๋ณต์ด๋ผ ํ๋ค.
- ์คํธ๋ฆผ API๋ฅผ ์ด์ฉํ๋ฉด ๋ฃจํ๋ฅผ ์ ๊ฒฝ์ธ ํ์๊ฐ ์๋ค. ์คํธ๋ฆผ API์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๋๋ค. ์ด๋ฅผ ๋ด๋ถ ๋ฐ๋ณต์ด๋ผ๊ณ ํ๋ค.
[ ๋ฉํฐ์ฝ์ด ์ปดํจํฐ ]
๋จ์ผ CPU๊ฐ ์๋ 4 ๋๋ 8๊ฐ ์ด์์ CPU๋ฅผ ๊ฐ๋๋ค. ์ ํต์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ง์ CPU ์ค ๋จ ํ๋๋ง์ ์ฌ์ฉํด ๋๋จธ์ง CPU๋ฅผ ๋ญ๋น์ํค๋ ๋ฌธ์ ๊ฐ ์์๋ค. ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ์๋ฐ 8์์๋ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ ์ ๊ณตํ๋ค.
1.4.1 ๋ฉํฐ์ค๋ ๋ฉ์ ์ด๋ ต๋ค
๋ฉํฐ์ค๋ ๋ฉ ์ฝ๋๋ฅผ ๊ตฌํํ์ฌ ๋ณ๋ ฌ์ฑ์ ์ด์ฉํ์ฌ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ค๋ ๋๋ฅผ ์ ์ ์ดํ์ง ๋ชปํ๋ฉด ์์น์๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ณํ ์ ์๋ค.
๋ฉํฐ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์์ฐจ์ ์ธ ๋ชจ๋ธ๋ณด๋ค ๋ค๋ฃจ๊ธฐ๊ฐ ์ด๋ ต๋ค
์๋ ๋ ์ค๋ ๋๊ฐ ์ ์ ํ ์ ์ด๋์ง ์์์ ๋ ๋์ฌ ์ ์๋ ๋ฌธ์ ์ด๋ค.
์๋ฐ 8์ ์คํธ๋ฆผ API๋ก โ์ปฌ๋ ์ ์ ์ฒ๋ฆฌํ๋ฉด์ ๋ฐ์ํ๋ ๋ชจํธํจ๊ณผ ๋ฐ๋ณต์ ์ธ ์ฝ๋ ๋ฌธ์ โ ๊ทธ๋ฆฌ๊ณ โ๋ฉํฐ์ฝ์ด ํ์ฉ ์ด๋ ค์โ์ด๋ผ๋ ๋ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ๋ชจ๋ ํด๊ฒฐํ๋ค.
๋ฐ๋ณต๋๋ ํจํด(SQL๊ณผ ๊ฐ์ DB ์ฟผ๋ฆฌ์ ๋น์ทํ)์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ํํฐ๋ง ํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ๋ ๋ฑ์ ๊ธฐ๋ฅ์ด ์๋ค.
- ํฌํน ๋จ๊ณ: ๋ฆฌ์คํธ๋ฅผ ํํฐ๋งํ ๋ ํ CPU๋ ๋ฆฌ์คํธ์ ์๋ถ๋ถ์ ์ฒ๋ฆฌํ๊ณ , ๋ค๋ฅธ CPU๋ ๋ฆฌ์คํธ์ ๋ท๋ถ๋ถ์ ์ฒ๋ฆฌํ๋๋ก ์์ฒญ
- ํํฐ ๋จ๊ณ: ๊ฐ๊ฐ์ CPU๋ ์์ ์ด ๋งก์ ์ ๋ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ๊ฒฐ๊ณผ ํฉ์นจ: ๋ง์ง๋ง์ผ๋ก ํ๋์ CPU๊ฐ ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํ๋ค.
์คํธ๋ฆผ์ ์คํธ๋ฆผ ๋ด์ ์์๋ฅผ ์ฝ๊ฒ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
์ปฌ๋ ์ ์ ํํฐ๋งํ ์ ์๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ์ปฌ๋ ์ ์ ์คํธ๋ฆผ์ผ๋ก ๋ฐ๊พธ๊ณ , ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ๋ค์์, ๋ฆฌ์คํธ๋ก ๋ค์ ๋ณต์ํ๋ ๊ฒ์ด๋ค.
1.5 ๋ํดํธ ๋ฉ์๋์ ์๋ฐ ๋ชจ๋
์์ฆ์ ์ธ๋ถ์์ ๋ง๋ค์ด์ง ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒฝํฅ์ด ์๋ค. ์ด์ ์๋ฐ์์๋ ํ๋ฒํ ํจํค์ง ์งํฉ์ ํฌํจํ๋ JAR ํ์ผ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ ๋ถ์๊ณ , ํด๋น ํจํค์ง์ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๊พธ๋ ์ํฉ์์ ๋ชจ๋ ํด๋์ค์ ๊ตฌํ์ ๋ฐ๊ฟ์ผ ํ์ผ๋ฏ๋ก ์์ฒญ๋ ๋น์ฉ์ด ๋ค์๋ค.
์๋ฐ 8๊ณผ ์๋ฐ 9์์ ์ด๋ฅผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ๋ค.
- ์๋ฐ 9: ๋ชจ๋ ์์คํ ์ ๋ชจ๋์ ์ ์ํ๋ ๋ถ๋ฒ์ ์ ๊ณตํ๋ฏ๋ก ์ด๋ฅผ ์ด์ฉํด ํจํค์ง ๋ชจ์์ ํฌํจํ๋ ๋ชจ๋์ ์ ์ํ ์ ์๋ค. ๋ชจ๋ ๋๋ถ์ JAR ๊ฐ์ ์ปดํฌ๋ํธ์ ๊ตฌ์กฐ๋ฅผ ์ ์ฉํ ์ ์์ผ๋ฉฐ ๋ฌธ์ํ์ ๋ชจ๋ ํ์ธ ์์ ์ด ์ฉ์ดํด์ก๋ค.
- ์๋ฐ 8: ์ธํฐํ์ด์ค๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋๋ก ๋ํดํธ ๋ฉ์๋๋ฅผ ์ง์ํ๋ค.
์๋ฐ 8์ ๊ตฌํ ํด๋์ค์์ ๊ตฌํํ์ง ์์๋ ๋๋ ๋ฉ์๋๋ฅผ ์ธํฐํ์ด์ค์ ์ถ๊ฐํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๋ฉ์๋ ๋ณธ๋ฌธ์ ํด๋์ค ๊ตฌํ์ด ์๋๋ผ ์ธํฐํ์ด์ค์ ์ผ๋ถ๋ก ํฌํจ๋๋ค. โ ๋ํดํธ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
[ ๋ํดํธ ๋ฉ์๋ ]
- ๋ํดํธ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ ์๋์ ์ธํฐํ์ด์ค ์ค๊ณ๋ฅผ ์์ ๋กญ๊ฒ ํ์ฅํ ์ ์๋ค.
- ์๋ฐ 8์์๋ ์ธํฐํ์ด์ค ๊ท๊ฒฉ๋ช ์ธ์ default๋ผ๋ ํค์๋๋ฅผ ์ง์ํ๋ค.
ex) ์๋ฐ 8์์๋ List์ ์ง์ sort ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค (List ์ธํฐํ์ด์ค์ ๋ค์๊ณผ ๊ฐ์ ๋ํดํธ ๋ฉ์๋ ์ ์๊ฐ ์ถ๊ฐ๋์๊ธฐ ๋๋ฌธ์ด๋ค. โ ์ด ๋ํดํธ ๋ฉ์๋๋ ์ ์ ๋ฉ์๋์ธ Collections.sort๋ฅผ ํธ์ถํ๋ค.)
๋ฐ๋ผ์ ์๋ฐ 8 ์ด์ ์๋ List๋ฅผ ๊ตฌํํ๋ ๋ชจ๋ ํด๋์ค๊ฐ sort๋ฅผ ๊ตฌํํด์ผ ํ์ง๋ง ์๋ฐ 8๋ถํฐ๋ ๋ํดํธ sort๋ฅผ ๊ตฌํํ์ง ์์๋ ๋๋ค.
ํ๋์ ํด๋์ค์์ ์ฌ๋ฌ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค. โ ์ฌ๋ฌ ์ธํฐํ์ด์ค์ ๋ค์ค ๋ํดํธ ๋ฉ์๋๊ฐ ์กด์ฌํ ์ ์๋ค๋ ๊ฒ์ ๋ค์ค ์์์ด ํ์ฉ๋๋ค๋ ๊ฒ์ธ๊ฐ?
โ ์๋ฐํ ๋งํ๋ฉด ๋ค์ค ์์์ ์๋์ง๋ง ์ด๋ ์ ๋๋ โ๊ทธ๋ ๋คโ๋ผ๊ณ ๋งํ ์ ์๋ค.
1.6 ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ ธ์จ ๋ค๋ฅธ ์ ์ฉํ ์์ด๋์ด
[ null์ ํํผํ๋ ๊ธฐ๋ฒ ]
์๋ฐ 8์์๋ NullPointer ์์ธ๋ฅผ ํผํ ์ ์๋๋ก ๋์์ฃผ๋ **Optional
- **Optional
** - ๊ฐ์ ๊ฐ๊ฑฐ๋ ๊ฐ์ง ์์ ์ ์๋ ์ปจํ ์ด๋ ๊ฐ์ฒด
- ๊ฐ์ด ์๋ ์ํฉ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ๋ช ์์ ์ผ๋ก ๊ตฌํํ๋ ๋ฉ์๋ ํฌํจ