์๋ฐ ๊ฐ๋ฐ์๋ผ๋ฉด ๋๊ตฌ๋ ํ ๋ฒ์ฏค์ ๋ค์ด๋ดค์ ์ดํํฐ๋ธ ์๋ฐ(Effective Java).
์กฐ์์ ๋ธ๋กํฌ(Joshua Bloch)๊ฐ ์ด ์ด ์ฑ
์, ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐ์ด๋ธ๊ณผ ๊ฐ์ ์กด์ฌ๋ก ์ฌ๊ฒจ์ง๋๋ค.
2001๋
์ 1ํ์ด ๋์จ ์ดํ, ์๋ฐ ์ธ์ด์ ๋ณํ์ ํจ๊ป ๊พธ์คํ ๊ฐ์ ํ์ด ์ถ๊ฐ๋์๊ณ , ํ์ฌ๋ 3ํ๊น์ง ๋์ ์์ต๋๋ค.
Effective Java๋ฅผ ์ ํํ ์ด์ ๋, ์๋ฐ ๊ฐ๋ฐ์๋ก์ ๋์ฑ ์ฑ์ํ๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ์ ๊ฐ๋ง ๋๋ฌธ์ด์์ต๋๋ค.
์กฐ์์ ๋ธ๋กํฌ๋ ๋ฐ์ด๋ ์๋ฐ ๊ฐ๋ฐ์์ด์ ์ ์ ๊ฐ์
๋๋ค.
๊ทธ๋ ์นด๋ค๊ธฐ ๋ฉ๋ก ๋ํ๊ต์์ ์ปดํจํฐ ๊ณผํ ๋ฐ์ฌ ํ์๋ฅผ ๋ฐ๊ณ , ์ ๋ง์ดํฌ๋ก์์คํ
์ฆ(Sun Microsystems)์ ๊ตฌ๊ธ(Google)์์ ํต์ฌ์ ์ธ ์ญํ ์ ์ํํ์ต๋๋ค.
ํนํ, ์๋ฐ ์ปฌ๋ ์
ํ๋ ์์ํฌ์ java.math ํจํค์ง๋ฅผ ์ค๊ณํ๊ณ ๊ตฌํํ๋ ๋ฐ ์ฃผ๋์ ์ธ ์ญํ ์ ํ์ต๋๋ค.
๊ทธ์ ๊น์ด ์๋ ์ง์๊ณผ ํ๋ถํ ๊ฒฝํ์ Effective Java ๊ณณ๊ณณ์ ๋
น์ ์์ผ๋ฉฐ, ๋
์๋ค์๊ฒ ๊น์ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.

Effective Java๋ ์ด 12๊ฐ์ ์ฑํฐ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ ์ฑํฐ๋ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ํน์ ์์ญ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ง์นจ๊ณผ ๊ถ์ฅ ์ฌํญ์ ๋ด๊ณ ์์ต๋๋ค.
๊ฐ ์ฑํฐ์ ํต์ฌ ๋ด์ฉ์ ํ ๋ฌธ์ฅ์ผ๋ก ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1์ฅ.
๋ค์ด๊ฐ๊ธฐ: ์๋ฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ์ ๋ฐ์ ์ธ ์กฐ์ธ
2์ฅ.
๊ฐ์ฒด ๋ง๋ค๊ธฐ: ๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ฆฌ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก
3์ฅ.
๋ฉ์๋: ๋ฉ์๋ ์ค๊ณ ๋ฐ ์ฌ์ฉ๋ฒ์ ๋ํ ์ง์นจ
4์ฅ.
ํด๋์ค์ ์ธํฐํ์ด์ค: ํด๋์ค์ ์ธํฐํ์ด์ค ์ค๊ณ ์์น
5์ฅ.
์ ๋ค๋ฆญ: ์ ๋ค๋ฆญ์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
6์ฅ.
์ด๊ฑฐ ํ์
๊ณผ ์ ๋ํ
์ด์
: ์ด๊ฑฐ ํ์
๊ณผ ์ ๋ํ
์ด์
ํ์ฉ๋ฒ
7์ฅ.
๋๋ค์ ์คํธ๋ฆผ: ๋๋ค์ ์คํธ๋ฆผ์ ํ์ฉํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
8์ฅ.
๋ฉ์๋: ๋ฉ์๋ ์ค๊ณ ๋ฐ ์ฌ์ฉ๋ฒ์ ๋ํ ์ง์นจ
9์ฅ.
์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ: ์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ ํํ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ์ฑ
10์ฅ.
์์ธ: ์์ธ ์ฒ๋ฆฌ์ ๋ชจ๋ฒ ์ฌ๋ก
11์ฅ.
๋์์ฑ: ๋ฉํฐ์ฐ๋ ๋ ํ๊ฒฝ์์์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ
12์ฅ.
์ง๋ ฌํ: ์ง๋ ฌํ์ ์ํ์ฑ๊ณผ ๋์
์ด ์ฑ
์ ์ฒด๋ฅผ ๊ดํตํ๋ ํต์ฌ ๋ฉ์์ง๋ ์๋ฐ ์ธ์ด์ ๊ธฐ๋ฅ์ ์ ๋๋ก ์ดํดํ๊ณ ์ฌ์ฉํ๋ผ๋ ๊ฒ์
๋๋ค.
Effective Java๋ ์๋ฐ ์ธ์ด์ ์จ๊ฒจ์ง ๊ธฐ๋ฅ๊ณผ ์ ์ฌ๋ ฅ์ ัะฐัะบััะฒะฐะตั, ๊ฐ๋ฐ์๋ค์ด ๋์ฑ ํจ์จ์ ์ด๊ณ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ์๋ดํฉ๋๋ค.
Effective Java์๋ ๊ธฐ์ตํด์ผ ํ ๋ฌธ์ฅ๋ค์ด ๊ฐ๋ํฉ๋๋ค.
๊ทธ์ค ๋ช ๊ฐ์ง๋ฅผ ๊ผฝ์๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ดํ
1: ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ณ ๋ คํ๋ผ
์์ดํ
3: private ์์ฑ์๋ ์ด๊ฑฐ ํ์
์ผ๋ก ์ฑ๊ธํด์์ ๋ณด์ฆํ๋ผ
์์ดํ
8: equals๋ฅผ ์ฌ์ ์ํ ๋๋ hashCode๋ ์ฌ์ ์ํ๋ผ
์์ดํ
13: ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ ๊ถํ์ ์ต์ํํ๋ผ
์์ดํ
52: ์์ธ๋ฅผ ๋ฌด์ํ์ง ๋ง๋ผ
Effective Java๋ฅผ ์ฝ์ผ๋ฉด์ ๊ฐ์ฅ ํฌ๊ฒ ๋๋ ์ ์, ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์๋ ์ ๋ต์ด ์ ํด์ ธ ์์ง ์๋ค๋ ๊ฒ์
๋๋ค.
์ํฉ์ ๋ฐ๋ผ ๊ฐ์ฅ ์ ํฉํ ๋ฐฉ๋ฒ์ ๋ฌ๋ผ์ง ์ ์์ผ๋ฉฐ, Effective Java๋ ๊ทธ๋ฌํ ์ํฉ ํ๋จ ๋ฅ๋ ฅ์ ํค์์ฃผ๋ ๋ฐ ๋์์ ์ค๋๋ค.
Effective Java๋ ๋จ์ํ ๊ธฐ์ ์์ ์ ๋์ด, ์๋ฐ ๊ฐ๋ฐ์๋ก์์ ์ฌ๊ณ ๋ฐฉ์๊ณผ ํ๋๋ฅผ ๊ฐ๋ค๋ฌ๋ ๋ฐ ํฐ ์ํฅ์ ๋ฏธ์น๋ ์ฑ
์
๋๋ค.
Effective Java๋ ์๋ฐ ๊ฐ๋ฐ์ ๊น์ด๋ฅผ ๋ํ๊ณ , ๋ ๋์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋๋๋ก ์ด๋์ด์ฃผ๋ ํ๋ฅญํ ์ง์นจ์์
๋๋ค.
Effective Java์ ๊ฐ์ฅ ํฐ ๋งค๋ ฅ์, ๊ฐ ์์ดํ
๋ค์ด ๋จ์ํ ์ด๋ก ์ ์ธ ์ค๋ช
์ ๊ทธ์น์ง ์๊ณ , ์ค์ ์ฝ๋ ์์ ์ ํจ๊ป ์ ์๋๋ค๋ ์ ์
๋๋ค.
Effective Java๋ฅผ ํตํด ์ป์ ์ง์์ ์ค์ ๊ฐ๋ฐ ํ์ฅ์์ ์ฆ์ ์ ์ฉํ ์ ์์ผ๋ฉฐ, ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Effective Java๋ ์๋ฐ ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฐ๋์ ์ฝ์ด์ผ ํ ์ฑ
์ด๋ฉฐ, ๊พธ์คํ ๋ฐ๋ณตํด์ ์ฝ๊ณ ์ค์ฒํด์ผ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
Effective Java๋ฅผ ํตํด ์ฌ๋ฌ๋ถ์ ์๋ฐ ์ฝ๋ฉ ์ค๋ ฅ์ด ํ ๋จ๊ณ ๋ ๋ฐ์ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ด๋ จ ๋ฌธ์
SI ๊ธฐ์ 1๋ ์ฐจ์ ์๋น์ค๊ธฐ์ ์ด์ง ์ฑ๊ณตํ์ต๋๋ค.
์ ์ด์ง ํ๊ธฐ์ ๋์ฌ ์ด์ง๋น๋ฒ(?)์ ๊ฐ์ด๋๋ผ์ธ์ด ์๋๋ผ๋ ๊ฒ์ ๊ผญ... ์๋ฐ๋ด ์คํฐ๋๋ "Java + Spring" ๊ฐ๋ฐ์๋ฅผ ๋ชฉํ๋ก "ํด๋ฆฐ์ฝ๋... ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด๋ฅผ ์์์ผ๋ก ์ง๊ธ ์ดํํฐ๋ธ์๋ฐ๋ฅผ ์ฝ๊ณ ์์ต๋๋ค....