์ถ์ฒ: FreeCodeCamp Java๋ ์ค๋๋ ์ฌ์ฉ๋๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค ํ๋์
๋๋ค. ํ๋ซํผ ๋
๋ฆฝ์ ์ด๋ฏ๋ก ๋ชจ๋ ์ ํ์ ์ฅ์น์ ๋ชจ๋ ์ด์ ์ฒด์ ์์ Java ์ ํ๋ฆฌ์ผ์ด์
์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฐ๋ ์๋์ ์ผ๋ก ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๋ง์ ํ๋ก๊ทธ๋๋จธ๋ค์ด ๋ง์คํฐํ๋ ์ธ์ด ์ค ํ๋์
๋๋ค. ์ฌ๋ฌ๋ถ์ด ์์งํด์ผ ํ Java์ ์ค์ํ ๊ธฐ๋ฅ์ ํด๋์ค ์์์
๋๋ค. ์์์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์ต์ ํํ์ฌ ํด๋์ค๋ฅผ ๋ ์ฝ๊ฒ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฏธ ํ
์คํธ ๋ฐ ๋๋ฒ๊น
๋ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ผ๋ฉด ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช
์ฃผ๊ธฐ๊ฐ ๋ ์งง์์ง๊ณ ๋น์ฉ๋ ์ ๋ ดํด์ง๋๋ค. ์ด๋ก ์ ์ผ๋ก๋ ๋จ์ํ ๊ฐ๋
์ด์ง๋ง ์์ ๊ด๊ณ๋ฅผ ์ฝ๋ฉํ๋ ค๋ฉด ์ธ๋ถ ์ฌํญ์ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. ํนํ ๋ค์ค ์์๊ณผ ๊ด๋ จํ์ฌ ํ๋์ ํ์ ํด๋์ค๊ฐ ์ฌ๋ฌ ์์ ํด๋์ค์ ์์ฑ์ ์์ํฉ๋๋ค. Java๋ ๋ค์ค ์์ ๊ด๊ณ๊ฐ ๋ชจํธํจ์ ์ผ๊ธฐํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ถํ์ง๋ง, ๋ฌด์์ ํด์ผ ํ ์ง ์๋ค๋ฉด ๋์ผํ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ๋ค์ค ์์ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ณ Java์ ๋์ฒด ์ฝ๋ฉ ์ต์
์ ๋ํด ๋
ผ์ํฉ๋๋ค.
์์ ์ฉ์ด
๋๋ก๋ ์ฑ๊ณต์ ์ธ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋๊ธฐ ์ํด ์ผ๋ฐ์ ์ธ ์ค๋ฅ๋ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋ฌธ์ ํด๊ฒฐ์ฌ๊ฐ ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ์์ ํ๊ณ ์ค๋งํธํ ์ฝ๋ฉ์ ํ์์ ์ธ ๋ถ๋ถ์ ๋๋ค. ๊ทธ๋ฌํ ๋ฌธ์ ์ค ํ๋๋ Java์ ๋ค์ค ์์(๋๋ ์์์ ๋ถ์กฑ)๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. Java์ ์์์ ์์ ํ ์ดํดํ๋ ค๋ฉด ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ ๊ธฐ๋ณธ ์์ ์ฉ์ด๋ฅผ ์ ์๊ณ ์์ด์ผ ํฉ๋๋ค.- ํด๋์ค๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ธฐ๋ณธ ํจํด ๊ตฌ์กฐ์ ๋๋ค. ํด๋์ค๋ ๊ฐ์ฒด ๊ทธ๋ฃน์ ๊ณตํต ์์ฑ์ ์ ์ํฉ๋๋ค.
- ์์ ํด๋์ค : ๊ธฐ๋ณธ ํด๋์ค ๋๋ ์ํผ ํด๋์ค๋ผ๊ณ ๋ ํฉ๋๋ค. ์์ ํด๋์ค๋ ํ์ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ์ฅ ๊ฐ๋ฅํ ํด๋์ค์ ๋๋ค. ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ์์ ํด๋์ค์ ์ ์์ ํจ์๋ ํ์ ํด๋์ค๋ฅผ ์์ฑํ ๋ ์ฌ์ฌ์ฉ๋ฉ๋๋ค.
- ํ์ ํด๋์ค : ๋ณด๋ค ์ผ๋ฐ์ ์ผ๋ก ํ์ ํด๋์ค๋ผ๊ณ ๋ถ๋ฆฌ๋ ํ์ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ๊ธฐ๋ฅ์ ์์ํฉ๋๋ค. ํ์ ํด๋์ค๋ ํ์ฅ ๋๋ ํ์ ํด๋์ค์ ๋๋ค.
- ์์ : ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค ๊ฐ์ ๊ด๊ณ์ ๋๋ค.
OOP ์์ ์ ํ
Java, C++, JavaScript, Python, PHP, Ruby ๋ฐ Perl์ ํฌํจํ์ฌ ์ค๋๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๋ง์ด ์์ต๋๋ค. ์์์ ์ด๋ฌํ OOP ์ธ์ด์์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ ์ด์ง๋ง ๊ฐ ์ธ์ด์ ๋ชจ๋ ์ ํ์ ์์์ด ์กด์ฌํ๋ ๊ฒ์ ์๋๋๋ค. ์ผ๋ฐ์ ์ธ ์์ ์ ํ๊ณผ ์ฌ์ฉ ์ค์ธ ํน์ ์ธ์ด์ ์์ ์ ํ ์ฌํญ์ ์๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์์์ ๋ํด ๋ ๋ง์ด ์์๋ก ๋ ํจ๊ณผ์ ์ธ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ต๋๋ค. Java๊ฐ ์ง์ํ๋ ์์ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- ๋จ์ผ ์์ค ์์ : ํ์ ํด๋์ค๊ฐ ๋จ์ผ ์์ ํด๋์ค์ ๊ธฐ๋ฅ์ ์์ํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
- ๋ค์ค ์์ค ์์ : ๋จ์ผ ์์ค ์์์ ๋ค์ค ์์ค ํํ์ ๋๋ค. ๋ค์ค ์์ค ์์์์๋ ํ์ ํด๋์ค๊ฐ ๋ค๋ฅธ ํ์ ํด๋์ค์ ์์ ํด๋์ค ์ญํ ์ ํ ์๋ ์์ต๋๋ค. ๊ฐ ์์ค ๊ฐ์ ๊ด๊ณ๋ ์ ํ์ ๋๋ค. ๋ค์ค ์์๋ณด๋ค ๋ ๋์ ๋ถ๊ธฐ๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ง์ง๋ง ํ์ ํด๋์ค์๋ ์์ ๋ชจ๋ ์์ค์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
- ๊ณ์ธต์ ์์ : ๋ค์ค ์์์ ๋ฐ๋์ ๋๋ค. ๊ณ์ธต์ ์์์์๋ ๋จ์ผ ์์ ํด๋์ค์ ๋ ์ด์์ ํ์ ํด๋์ค๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ ๊ฐ์ง๊ฐ ์๋ ๋์ ์๋์ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ํ์ด๋ธ๋ฆฌ๋ ์์ : ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ํ์ด๋ธ๋ฆฌ๋ ์์์ ๋ค๋ฅธ ์ ํ์ ์์์ ์กฐํฉํ ๊ฒ์ ๋๋ค.
- ๋ค์ค ์์ : ๋ค์ค ์์์์๋ ์์ ํด๋์ค์ ๋ถ๋ชจ ํด๋์ค๊ฐ ๋ ๊ฐ ์ด์ ์์ต๋๋ค. Java์ JavaScript๋ ๋ค์ค ์์์ ์ง์ํ์ง ์์ง๋ง C++์ ๊ฐ์ OOP ์ธ์ด๋ ์ง์ํฉ๋๋ค.
- ๋ค์ค ๊ฒฝ๋ก ์์ : ๋ค์ค, ๋ค์ค ๋ ๋ฒจ ๋ฐ ๊ณ์ธต์ ์์์ ํ์ด๋ธ๋ฆฌ๋์ธ ๋ค์ค ๊ฒฝ๋ก ์์์์ ํ์ ํด๋์ค๋ ์์ ํด๋์ค์ ์์ ํด๋์ค์ ์ฌ๋ฌ ํ์ ํด๋์ค๋ก๋ถํฐ ํน์ฑ๊ณผ ๊ธฐ๋ฅ์ ์์๋ฐ์ต๋๋ค. ๋ค์ค ๊ฒฝ๋ก ์์์ ๋ค์ค ์์์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ Java์์๋ ํด๋น ์ฌ์ฉ์ ์ง์ํ์ง ์์ต๋๋ค.
Java๊ฐ ๋ค์ค ์์์ ์ง์ํ์ง ์๋ ์ด์
๋ค์ค ์์์ ์ฃผ์ ๋ฌธ์ ์ ์ ํ์ ํด๋์ค์ ๋ชจํธ์ฑ์ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ๋๋ค. 1995๋ ๋ฐฑ์์์ ์์ Java ๋์์ด๋์ธ James Gosling์ ๋ค์ค ์์ ๋ฌธ์ ๊ฐ Java๊ฐ ํ์ํ ์ด์ ์ค ํ๋๋ผ๊ณ ๋ฐํ์ต๋๋ค. ๋ค์ค ์์์ ๋ด์ฌ๋ ๋ณต์ก์ฑ์ ๋ค์ด์๋ชฌ๋ ๋ฌธ์ ์์ ๊ฐ์ฅ ๋ถ๋ช ํ๊ฒ ๋๋ฌ๋ฉ๋๋ค. ๋ค์ด์๋ชฌ๋ ๋ฌธ์ ์์ ๋ถ๋ชจ ํด๋์ค A์๋ ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ์์ ํด๋์ค B์ C๊ฐ ์์ต๋๋ค. ์ฆ, ์์ ํด๋์ค B์ C๋ ํด๋์ค A๋ฅผ ํ์ฅํฉ๋๋ค. ์ด์ ํด๋์ค B์ ํด๋์ค C๋ฅผ ๋ชจ๋ ํ์ฅํ๋ ์๋ก์ด ์์ ํด๋์ค D๋ฅผ ๋ง๋ญ๋๋ค. ๋ค์ค ์์(D๋ B์ C๋ฅผ ํ์ฅ), ๊ณ์ธต์ ์์(B์ C๋ ํ์ฅ) A) ๋ฐ ๋ค์ค ์์ค ์์(D๋ A, B ๋ฐ C๋ฅผ ํ์ฅํจ). ๋ค์ด์๋ชฌ๋ ๋ฌธ์ ์์ ํ์ ํด๋์ค B์ C๋ ์์ ํด๋์ค A์ ๋ฉ์๋๋ฅผ ์์ํฉ๋๋ค. B์ C๋ ๋ชจ๋ ์์๋ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ B์ C์ ์๋ก์ด ๋ฐฉ๋ฒ์ ์๋ก ๋ชจ์๋ฉ๋๋ค. ๋ง์ง๋ง ์์ ํด๋์ค D๋ ์ฌ๋ฌ ๋ถ๋ชจ B์ C๋ก๋ถํฐ ๋ ๊ฐ์ ๋ ๋ฆฝ์ ์ด๊ณ ์ถฉ๋ํ๋ ๋ฉ์๋๋ฅผ ์์๋ฐ์ต๋๋ค. ํด๋์ค D์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง ๋ช ํํ์ง ์์ผ๋ฏ๋ก ๋ชจํธ์ฑ์ด ๋ฐ์ํฉ๋๋ค. ๋ค๋ฅธ OOP ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ค์ค ์์์ ๋ชจํธํจ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ํ ๋ฐฉ๋ฒ์ ๊ตฌํํฉ๋๋ค.Java์ ๋ค์ค ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ
๋ค์ค ์์์ด ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํด์ ๊ทธ๊ฒ์ด ์ธ๋ชจ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ํ๋์ ํด๋์ค๊ฐ ์ฌ๋ฌ ๋ค๋ฅธ ํด๋์ค์ ํจ์๋ฅผ ๊ฐ๊ธฐ๋ฅผ ์ํ๋ ์ํฉ์ด ๋ง์ด ์์ต๋๋ค. ๋น์ ์ด ๋งค์ฐ ์ฑ๊ณต์ ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ์๊ฐ ๋์์ ๋ ๊ตฌ์ ํ๊ฒ ๋ Tesla Roadster์ ๋ํด ์๊ฐํด ๋ณด์ญ์์ค. ๊ธฐ์ ์ ํน์ฑ์ ์คํฌ์ธ ์นด ํด๋์ค์ ์ ๊ธฐ์ฐจ ํด๋์ค๋ฅผ ๋ชจ๋ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๋ ๋ค๋ฅธ ์: ์ด ๊ธฐ์ฌ๋ฅผ ์ฝ๊ณ ์๋ ๋ธ๋ผ์ฐ์ ์ ๋๋ค. ์ธํฐ๋ท ๊ฐ์ธ์ ๋ณด ๋ณดํธ ์๋ฃจ์ ํด๋์ค์ ์ผ๋ฐ ์ธํฐ๋ท ๋ธ๋ผ์ฐ์ ํด๋์ค์ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Java์์๋ ์ฌ๋ฌ ํด๋์ค๋ฅผ ํ์ฅํ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ์ธ์ด๋ ๋ค์ค ์์ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊น์? Java๋ ์ธํฐํ์ด์ค๋ผ๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ธํฐํ์ด์ค๋ ํด๋์ค์ ์ํด ๊ตฌํ๋ ๋์์ ์ ์ํ๋ ์ถ์ ์ ํ์ ๋๋ค. ์ธํฐํ์ด์ค๋ ์ถ์์ ์ด๊ธฐ ๋๋ฌธ์ ํด๋น ๋์์ ๋ํ ์์ธํ ์ง์นจ์ด ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ๋์ ํด๋์ค๋ ์ธํฐํ์ด์ค ๋์์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค. ์ธํฐํ์ด์ค์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ ์์ ์ธ ํน์ฑ์ด ์์ต๋๋ค.- ํด๋์ค์ ๋ฌ๋ฆฌ ์ธํฐํ์ด์ค๋ฅผ ์ธ์คํด์คํํ์ง ์์ต๋๋ค. ๋์ ํด๋์ค๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
- ์ธํฐํ์ด์ค์๋ ๊ณต๊ฐ ์์ ์ ์์ ๋ฉ์๋ ํค๋๋ง ํฌํจ๋ฉ๋๋ค.
- ์ธํฐํ์ด์ค๋ ํด๋์ค๊ฐ ์๋ ๋ค๋ฅธ ์ธํฐํ์ด์ค๋ง ํ์ฅํ ์ ์์ต๋๋ค.
- ์ธํฐํ์ด์ค๋ ์ฌ๋ฌ ์ธํฐํ์ด์ค๋ฅผ ํ์ฅํ ์ ์๊ณ , ํด๋์ค๋ ์ฌ๋ฌ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
GO TO FULL VERSION