์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ Java์ ์ญํ
์ถ์ฒ: DZone Java๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค ํ๋์ ๋๋ค. ๊ธฐ์ , ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. Java๋ ๋ฐ์ดํฐ ๊ณผํ์์ AR/VR์ ์ด๋ฅด๊ธฐ๊น์ง ์ฃผ์ ๊ธฐ์ ์ฐ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณด์ ํ๊ณ ์์ต๋๋ค. Java๋ฅผ ์ฌ์ฉํ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ด ์ด ์ธ์ด์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ฌ์ฉ ์ฌ๋ก์ด์ง๋ง ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ Java๊ฐ ์ฌ์ฉ๋๋ ์์ญ ์ค ํ๋๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ง๋ 20๋ ๋์ Java ๊ฐ๋ฐ์ด ์น๊ณผ ๋ชจ๋ฐ์ผ ์ฅ์น์์ ์ธ๊ธฐ๋ฅผ ์ป์ ์ด์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์น๊ณผ ๋ชจ๋ฐ์ผ์์ Java๋ฅผ ์ฌ์ฉํ๋ ์ฃผ๋ ์ด์ ์ค ํ๋๋ ๊ณ ์ฑ๋ฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฒ๋ฆฌ ์ค๋ฅ ์์ด ๋น ๋ฅด๊ฒ ์คํ๋ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ด์ ๋ ์์ต๋๋ค:1. ์คํ์์ค
์คํ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ Java์๋ ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค. ์ฒซ์งธ, ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ก์ธ์ค ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค. ๋์งธ, ์คํ ์์ค์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ์ธ์ด๋ฅผ ๋ณ๊ฒฝํ๊ณ ์์ฃผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ๋ํ Java์๋ ์ฝ๊ธฐ ์ฌ์ด ๊ตฌ๋ฌธ์ด ์์ด ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ฅ์น์ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๊ฐ๋ฐ์๋ ๊ธฐ์กด ์ธ์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.2. ํฌ๋ก์ค ํ๋ซํผ
Java ํ๋ก๊ทธ๋๋ฐ์ ๋ ๋ค๋ฅธ ์ด์ ์ ํฌ๋ก์ค ํ๋ซํผ ์ธ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ์๋ Windows์์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ macOS ๋ฐ Linux์์ ์คํํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ "ํ ๋ฒ ์์ฑํ๋ฉด ์ด๋์์๋ ์คํ"์ด๋ผ๋ ์์น์ด ์ ์ฉ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ค์ํ ์์คํ ์์ ์์ ํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๊ณ ๋ค์ํ ์์คํ ์์์ ํ ์คํธ ํ๋ก์ธ์ค๊ฐ ๋จ์ํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์๋ ํ๋ก๊ทธ๋จ์ด ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ด์ ์ฒด์ ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋๋์ง ํ ์คํธํ ์ ์์ต๋๋ค.3. ๋ชจ๋ฐ์ผ ์นํ์
Java๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค. Android ์ฑ ๊ฐ๋ฐ์๋ ๊ตฌํํ๊ธฐ ์ฝ๊ณ ๋ณด์ ๊ธฐ๋ฅ๊ณผ ํฌ๋ก์ค ํ๋ซํผ ๊ธฐ๋ฅ์ ๊ฐ์ถ Java ์ธ์ด๋ฅผ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. Android์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅํ๋ ค๋ฉด ๊ฐ๋ ฅํ ์ธ์ด๊ฐ ํ์ํ์ง๋ง Java๋ ๋๋ผ์ด ํ์ฅ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ํ Android ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ํ๋ก์ธ์ค๋ ๋จ์ํ๋ฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ์ด๊ฒ์ด ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ ์์ ์ ์ด๊ณ ์ญ๋์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ผ๋ ๊ฒ์ ์์ํฉ๋๋ค.4. ๋๊ตฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Java์ ๊ฐ์ฅ ์ค์ํ ์ฅ์ ์ค ํ๋๋ ๋ค์ํ ๋๊ตฌ์์ ํธํ์ฑ์ ๋๋ค. Spring, Hibernate, Struts, Spark ๋ฑ์ ํ๋ ์์ํฌ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๋จ์ํํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ ๋๊ตฌ๋ ๋ํํ ๋ฐ ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ธฐ ์ํ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Apache Commons, Java Standard Libraries, Maven, Jackson ๋ฑ๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ์ฒ์๋ถํฐ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.5. ํ๋ฐํ ์ปค๋ฎค๋ํฐ
์ ์ธ๊ณ์๋ 760๋ง ๋ช ์ด์์ Java ๊ฐ๋ฐ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ค์ ์ง์์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์ฌ๊ธฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค. Java๋ 6๊ฐ์๋ง๋ค ์ ๋ฐ์ดํธ๋๋ฏ๋ก ๊ฐ๋ฐ์๋ ๋น ๋ฅด๊ฒ ํ์ตํ๊ณ ๋ ๋์ ์ ํ์ ๋ง๋ค ์ ์๋ ๊ธฐํ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. Java ์ปค๋ฎค๋ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์ฐพ์ ์๋ ์์ต๋๋ค.์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ Java์ ๋ถ์
1995๋ Sun Microsystems์์ ๊ฐ๋ฐ๋ ์ด๋๋ก Java ์ธ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ ๊ณ์ ์ฐ์ ์์ ์ค ํ๋๊ฐ ๋์์ต๋๋ค. ์ค๋๋ ์ ์ธ๊ณ์ ๊ธฐ์ ๋ค์ ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ญ๋๋ค. Google, Netflix, Spotify ๋ฐ Pinterest๋ ๊ธฐ์ ์คํ์์ Java๋ฅผ ์ฌ์ฉํ๋ ์์์ ํ์ฌ์ ๋๋ค. ์ ๋ฌธ๊ฐ๋ค์ IT ๋ถ์ผ์ ๊ธฐ์ ์ค 60% ์ด์์ด ์ด๋ค ํํ๋ก๋ Java๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ถ์ ํฉ๋๋ค. ๋ํ ์น ๊ฐ๋ฐ์ ๋ค๋ฅธ ์์ญ, ์ฆ ํด๋ผ์ฐ๋ ์ปดํจํ , ์์ ๋ฏธ๋์ด, ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ, AR, VR ๋ฑ์์ ์ฑํ๋์ด ์ธ๊ธฐ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋จ์ ์์ต๋๋ค. ํ์ฌ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ํคํ ์ฒ๊ฐ ํ์ํ ๊ธฐ์ ์์ ์ฌ์ฉํ ์ ์๋ ์ฐ์ํ๊ณ ๊ฐ๋ ฅํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. JavaScript์ ๊ฒฐํฉํ๋ฉด Java๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ๋ซํผ์์ ์คํํ ์ ์๋ ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.์ต์ ์ฌ์ฉ ์ฌ๋ก์์ Java์ ๋ถ์
์น ๊ฐ๋ฐ ๋ฐ ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ ์ธ์๋ Java๋ ํ๋ ๊ธฐ์ ์ธ๊ณ์์ ๋๊ฐ์ ๋ํ๋์ต๋๋ค. ์ค๋๋ Java๋ ๊ณผํ ์์ฉ ๋ถ์ผ์ ๋งค์ฐ ์ ์ฉํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ๊ณผํ ์ปดํจํ ์ ์ํ ์์ ํ๊ณ ๋น ๋ฅด๋ฉฐ ํด๋ ๊ฐ๋ฅํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. MATLAB์ Java ๊ธฐ๋ฐ ๊ณผํ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ ๋๋ค.-
Java๋ ๊ณผํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฐํธ์๋ ๋ฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ์ ์ฉํฉ๋๋ค. ํ๋ฐํธ์๋ ๊ฐ๋ฐ์๋ Struts ๋ฐ Java Server Pages๋ฅผ ์ฌ์ฉํ๊ณ ๊ณผํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ Java Core๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
Java๋ ๋ฐ์ดํฐ ๋ถ์์๋ ์ ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ถ์ ์๋ฃจ์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ค๋๋ Java๋ ์ฌ๋ฌผ ์ธํฐ๋ท ๋ถ๋ฌธ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฐพ์์ต๋๋ค. ์ค๋งํธ์นด๋, ์ผ์ ๋ฑ ์๋ฒ ๋๋ ์์คํ ์ ํต์ฌ ๊ธฐ์ ์ด๋ค. ๋ฐ๋ผ์ ๊ธฐ์ ์ ํ ์๋ํ ์ฐ์ ์์ ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ, ์คํธ๋ฆฌ๋ฐ ๋๋ฐ์ด์ค ๊ธฐ์ ๋ฐ ์ค๋งํธ TV ๊ฐ๋ฐ์๋ ์ ๊ทน์ ์ผ๋ก ํ์ฉ๋๊ณ ์์ต๋๋ค.
-
Hadoop ๋น ๋ฐ์ดํฐ ํ๋ซํผ์ Java๋ก ์์ฑ๋์์ต๋๋ค. ์คํ ์์ค์ด์ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋น ๋ฐ์ดํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ๋๋ค. Scala์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ Java Virtual Machine์์ ์ฝ๊ฒ ์คํ๋ ์ ์์ผ๋ฉฐ ๋น ๋ฐ์ดํฐ ๋ถ์์ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
-
๊ฒ์์ Java๊ฐ ๋ค์ํ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๋ ์ ํฅ ์ฐ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ต๋ ์คํ ์์ค 3D ๊ฒ์ ๊ฐ๋ฐ ์์ง์ธ jMonkeyEngine์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๋ํ DVM(Dalvik Virtual Machine)์ ์ฃผ๋ก Java์์ ์ง์๋๋ฉฐ Android์ฉ ๋ํํ ๊ฒ์์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ - ์ฅ์ ๊ณผ ๋จ์
์ถ์ฒ: Dev.to ์ต์ํ์ง ์์ ๊ธฐ์ ์ ๋ํ ์ ํต์ ์ธ ํ์๋ก ์๋ ๋ถ๊ตฌํ๊ณ ์ ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ด์ ์ ์ธ์ํ๊ณ ์์ต๋๋ค. ๋ค์์ ์ด ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ์ค๋ช ํ๋ ๋๋ต์ ์ธ ์ฅ์ ๋ชฉ๋ก์ ๋๋ค.์์ ํ ๋์์ฑ
๊ธฐ๋ฅ์ ์ ๊ทผ ๋ฐฉ์์ ์์ ํ ๋์์ฑ, ์ฆ ์ค๋ ๋ ์ถฉ๋์ด๋ ์์ ์ถฉ๋์ ์ผ์ผํค์ง ์๊ณ ๋ณ๋์ ์ค๋ ๋์์ ์์ ์ ์คํํ๋ ๊ธฐ๋ฅ์ ์ฅ๋ คํฉ๋๋ค. ๊ทธ ์ด์ ๋ ๊ฐ์ฒด ์ ๊ทผ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ ์ฒ๋ฆฌ ์ค์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ๊ตฌ์ ์ถ๊ตฌ๊ฐ ์๊ณ , ๋ ๋๋ฌธ์ ์ ๊ตฌ๊ฐ ๋ฐ๋๋ ๊ฒ ์๋๋ค. Java์์๋ "์ค๋ ๋๋ก๋ถํฐ ์์ ํ" ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ํด๋น ๊ฐ์ฒด๊ฐ ๋์ผํ ๊ฐ์ ๊ฐ๋๋ค๊ณ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์๋ ์์์๋ ์์๋ฅผ ํ ๋ฒ์ ํ๋์ฉ ์ฒ๋ฆฌํ๋ ๋ฃจํ๋ฅผ ์ค๋ ๋ ๋ด๋ถ์ ๋๋ค ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์์์ ์ ์ ์์ต๋๋ค.for( String item : items ) {
process(item);
}
์ด์ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋๋ค.
items.parallelStream().forEach( item -> process(item) );
๋น ๋ฅธ I/O
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ฉํฐ์ค๋ ๋ฉ๊ณผ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ง์ํฉ๋๋ค. ์ด๋ ๋ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์ถ๊ณผ ๊ฐ์ I/O ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋ณ๋์ ์ค๋ ๋๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฆ, CPU์ ๋์ญํญ ์ฌ์ฉ๋์ ์ต๋ํํฉ๋๋ค. ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ด๋ ๋ถ๋ช ํ ์ด์ ์ ๋๋ค. ์ด๋ ํจ์ ํธ์ถ์ด ํธ์ถ์ ์ค์ ๊ฒฐ๊ณผ๊ฐ ์๋๋ผ ๋ฏธ๋์ ํน์ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ฒ ๋ค๋ ์ฝ์์ธ Future๋ฅผ ๋ฐํํ ์ ์๋ค๋ ์์ด๋์ด๋ก ๊ตฌํ๋ฉ๋๋ค. ๋ฏธ๋์ ์ด๋ ์์ ์์ ํจ์๋ฅผ ์คํํ๋ ๋ฐํ ๊ฐ์ ์ป์ต๋๋ค. ์ด๋ ํ๋ก์ธ์ ์ค๋ ๋๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ REST ํธ์ถ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์์์ ์๋ฏธํฉ๋๋ค.ํํ์ ๊ฐ๊ฒฐ์ฑ
์ํํธ์จ์ด ๊ฐ๋ฐ์๋ ๋ณต์กํ ์์ด๋์ด๋ฅผ ์ฐ์ํ๊ฒ ํํํ๊ณ ์ถ์ดํฉ๋๋ค. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ๋ฉด ์ด ์์ ์ ๊ฐ๊ฒฐํ๊ฒ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, for ๋ฃจํ์ ๊ฐ์ ๊ณตํต ๊ตฌ์ฑ์ ๋ฃจํ๊ฐ ์ฌ์ฉ๋๋ ๊ณตํต for ์ฐ์ฐ์ ์ถ์ํํ๋ ์ค๋ ๋๋ก ๋์ฒด๋ ์ ์์ต๋๋ค. Java์ Lambda ํจ์์ ์ค๋ ๋๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ์ด์ ์๋ ๋ถ๊ฐ๋ฅํ๋ ์์ด๋์ด ํํ ๋ฅ๋ ฅ์ด ํ์ฅ๋์๋ค๋ ๊ฒ์ ์์ฌ์ ์ฌ์ง๊ฐ ์์ต๋๋ค.์ ๊ธฐ๋ฅ์ ์ด์ง ์์ต๋๊น?
์์ ๋ด์ฉ์ ๋ค์ ํ๋ฒ ๋ง์๋๋ฆฌ์๋ฉด, ํจ์ํ ์ฝ๋ฉ์๋ ๋ง์ ์ด์ ์ด ์์ผ๋ฏ๋ก ์ด ๊ธ์์๋ ๋ชจ๋ ๊ฒ์ ํ๋์ ์ฌ๋ก๋ก ์ผ๋ฐํํ๊ณ ๋ฐ๋์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํด์ผ ํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ํด์ผ ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ์ด๋ฌํ ๊ฒฐ์ ์ ์ ํ ์ด์ ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ์ ๋ํ ๋ช ํํ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.ํญ์ ์ง๊ด์ ์ผ๋ก ์ดํดํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค
์ฝ๋๋ฅผ ์์ฑํ ๋ ์ปดํจํฐ์ ํต์ ํ๋ ค๊ณ ํ์๋์? ์ปดํจํฐ์์ ์์ฌ์ํต์ด ๊ทธ๋ ๊ฒ ์ค์ํ๋ค๋ฉด ๊ธฐ๊ณ์ด๋ก ์์ฑํด ๋ณด๋ ๊ฒ์ ์ด๋จ๊น์? ๋ฌผ๋ก ์ด๊ฒ์ ๋งค์ฐ ์ด๋ ค์ด ์ผ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ปดํจํฐ ์ธ์ด๊ฐ ๋ฐ๋ช ๋์์ต๋๋ค. ๋ํ ํ๋ก๊ทธ๋๋จธ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ดํดํ ์ ์๋ ํํ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ํํธ์จ์ด๊ฐ ์ ์ ๋ ์ปค์ง๊ณ ๋ณต์กํด์ง์ ๋ฐ๋ผ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๋ ์ ๋ต์ด ํ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ถ์ํ์ ์ ๋ณด ์๋์ ํตํด ์ด๋ฅผ ๋ฌ์ฑํฉ๋๋ค. ์ด๋ฉ์ผ์ ๋ณด๋ด๊ธฐ ์ํด Java์์ ์ฌ์ฉํ๋ ํด๋์ค๋ ๋งค์ฐ ๋ณต์กํ์ง๋ง ์ด ํด๋์ค์ ์ธํฐํ์ด์ค๋ ๊ฐ๋จํฉ๋๋ค. ์์ธํ ๊ตฌํ์ ์จ๊ธฐ๊ณ ์ปจํธ๋กค์ ์ธ๋ถ ์ธก๋ฉด๋ง ํ์ํฉ๋๋ค. ์ค๊ดํธ ๋ฐ ๋๊ดํธ์ ๊ฐ์ ์ธ์ด ๊ธฐ๋ฅ์ ์กฐ๊ฑด๋ฌธ ๋ฐ ๋ฃจํ์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ์๋ ค์ค๋๋ค. ์ด์ ๋ฃจํ ๋๋ ์ฌ๊ท์ ์กฐ๊ฑด์ ํจ์๋ก ์ฎ๊น๋๋ค.for( String item : items ) {
System.out.println(item);
}
๊ทธ๊ฒ์ ๋ฐํ:
items.foreach( item -> System.out.println(item) );
์คํธ๋ฆฌ๋ฐ ๋ฐ ๋๋ค ์ ๊ทผ ๋ฐฉ์์ ํ์คํ ๋ ์งง์ต๋๋ค. ๋ ์ ์ ์ฝ๋๋ก ๋์ผํ ๊ธฐ๋ฅ์ ํํํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ด์ ์ฐ๋ฆฌ๊ฐ ์์์ผ ํ ๋ฉ์๋ ๋ด๋ถ์ ์ค์ ๋์์ ์จ๊ธฐ๊ณ ์๋ค๋ ๊ฒ์
๋๋ค. Java์ ๋ฃจํ๋ ํค์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ฉด์ ๋๋ค ํจ์๋ ๋ค์ํ ํํ์ ์ฌ๊ท๋ฅผ ๊ตฌํํ ์ ์์ผ๋ฉฐ ์ฌ๊ธฐ์๋ ์ด๋ฆ๋ง ํด๋น ๊ธฐ๋ฅ์ ๋ํ๋
๋๋ค. ์๋ฅผ ๋ค์ด:
boo.fooble( item -> System.out.println(item) );
๋ ์ด์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ฝ์ ์๋ ์์ต๋๋ค. ์ด๋ก ์ธํด ์คํ ํ๋ฆ์ ์ถ์ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ํจ์ ์ฐ๊ฒฐ(function chaining)์ผ๋ก, ํ ํจ์์ ๊ฒฐ๊ณผ๊ฐ ์ค๊ฐ ๋ณ์๋ฅผ ํ ๋นํ์ง ์๊ณ ๋ค์ ํจ์์ ์
๋ ฅ์ด ๋ฉ๋๋ค.
boolean result = boo
.fooble( /*some code*/ )
.bobble( /*some code*/)
.goober( /*some code*/);
์ด ์ฝ๋์ ์์ฑ์๋ ๋ชจ๋ ํจ์๋ฅผ ์์ฑํ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ณ ๊ทธ ๊ธฐ๋ฅ์ด ๋ฌด์์ธ์ง ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ์ดํด๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฝ๋๋ฅผ ์ฒ์ ์ ํ๋ ์ฌ๋๋ค์๊ฒ๋ ์ด๊ฒ์ด ๋งค๊ฐ๋ณ์, ํ๋ก์ธ์ค ๋๋ ๊ฐ ํจ์์ ๋ฐํ ๊ฐ์ ๋ํด ๋ง์ ๊ฒ์ ์๋ ค์ฃผ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ํ์ ํ ๋นํ๋ ํญ๋ชฉ์ ๋์ผํ ๋ด์ฉ์ ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค.
Car car = boo.fooble( /*some parameters*/);
Tyre tyre = car.bobble( /*some parameters*/);
int pressure = tyre.goober( /*some parameters*/);
๋งค๊ฐ๋ณ์์ ์ต๋ช
ํจ์๋ ๋์ผํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฒฝํ ๋น์ ๋ ์๋ ์ ์์ง๋ง ์ฌ๊ธฐ์ ์ค์ํ ์ ์ ์๋์ ์ค๋ช
๋ ํจ์์ ๊ธฐ๋ฅ์ ๋ ๊น์ด ์ดํดํ์ง ์์ผ๋ฉด ์ ์ ์๋ ๊ฒฐ๊ณผ์ ๋งค๊ฐ๋ณ์๊ฐ ํฌํจ๋ ๊ธด ๋ฌธ์ฅ์ ์ฝ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋๋ผ์ธ ์ ๋๋ก ์งง์ ์ฝ๋ ์ธ๊ทธ๋จผํธ์์๋ ํํ๋ ฅ์ด ๋ฐ์ด๋์ง๋ง ์ํํธ์จ์ด๋ฅผ ์ฒ์ ์ ํ๋ ์ฌ๋๋ค์๊ฒ๋ ์ดํดํ๊ธฐ ์ด๋ ค์ธ ์๋ ์์ต๋๋ค. ํด๋์ค์ ์ธํฐํ์ด์ค์ ํต์ฌ์ ๋ฐ์ดํฐ๋ฅผ ์จ๊ธฐ๊ณ ๊ฐ๋ฐ์๊ฐ ๊ตฌํ์ ์ดํดํ๊ฑฐ๋ ๋ณผ ํ์๊ฐ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ ๋ง๋๋ ๊ฒ์
๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋ํต ์์ด ํฌ๊ณ ๋ณต์กํ ์์คํ
์์ ์์
ํ ์ ์๋๋ก ์กด์ฌํฉ๋๋ค. ์ด๋ ํน์ ์ํฐํฐ์ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ๊ฑฐ์ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์๋ง๋ ์ฃผ๊ด์ ์ธ ์ด์ ๊ฐ ์์ ๊ฒ์
๋๋ค.
GO TO FULL VERSION