JAVA? ๋ฐฑ์ค๋?
๋ง์ฐํ๊ฒ "์น ๊ฐ๋ฐ์ด ํธ๋ ๋๋ค", "๋์ถฉ์ด๋ผ๋ ์ฝ๋ฉํ๋ ๋ฒ์ ์์๋์ผ๋ฉด ๋์์ด ๋๋ค."๋ก JAVA๊ณต๋ถ๋ฅผ ์์ํ ์ฌ๋๋ค์ด ์ต๊ทผ์ ์๋นํ ๋์ด๋ ๊ฑธ๋ก ์๊ณ ์์ต๋๋ค.
์ฒ์ println์ผ๋ก helloWorld๋ ์ถ๋ ฅํด๋ณด๊ณ , switch๋ฌธ์ ์ฌ์ฉํด ๊ณ์ฐ๊ธฐ๋ ๋ง๋ค์ด ๋ณด์์ง๋ง '๊ทธ๋์ ์ด๊ฒ ์ด๋์ ์ฐ์ด๋๊ฑด๋ฐ?' ๋ผ๋ ์๋ฌธ์ ๊ณ์ํด์ ๊ฐ์ง๊ณ ๊ณ์ ๋ถ๋ค์ ์ํด ๊ฐ๋จํ๊ฒ ์ JAVA๋ฅผ ๋ฐฐ์์ผ ํ๊ณ , ์ด๊ฒ ์ฐ๋ฆฌ๊ฐ ์๋ ์น ํ๋ก๊ทธ๋จ์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฐ์ด๋์ง์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๊ณ ์ ํฉ๋๋ค.
๋ฐฑ์๋(Back-End)
'๋ฐฑ์๋ ๊ฐ๋ฐ'์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋ถ๋ถ์ ๋ด๋นํ๋ ์ญํ ์ ์ํํฉ๋๋ค. ์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ์ ๋ฐฑ์ค๋์ ์ญํ ์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๊ณ , ๊ทธ๊ฒ์ด ์๋ฐ๋ก ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ ๋ฐ ๋ฐฑ์๋์ ์ญํ
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํต ํด๋ผ์ด์ธํธ - ์๋ฒ ๋ชจ๋ธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ๋๋ฐ์ด์ค(์ปดํจํฐ, ์ค๋งํธํฐ ๋ฑ)์ ์๋งํ๋ฉฐ, ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ํํ ํ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ๋ฐํํ๋ ์ปดํจํฐ์ ๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก ํธ์๋ ๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ๋ฉด๊ณผ ์ฌ์ฉ์์์ ์ํธ์์ฉ์ ๋ด๋นํฉ๋๋ค. ํ๋ก ํธ์๋๋ HTML, CSS, JavaScript ๋ฑ์ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง์ ๊ตฌ์กฐ, ์คํ์ผ, ๋์์ ๊ตฌํํฉ๋๋ค. ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ์๋ฒ๋ก ์ ์กํ๊ณ , ์๋ฒ์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ํ๋ฉด์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ๋์์ ์ํํ ์ ์์ต๋๋ค.
์ด๋ ๋ฐฑ์๋๋ ์๋ฒ ์ธก์์ ๋์ํ๋ฉฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์จ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
*์ด๋ ๋ฐฑ์ค๋๋ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ์ํํฉ๋๋ค
1) ๋ผ์ฐํ ๋ฐ ์์ฒญ ์ฒ๋ฆฌ
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ค๋ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ํด๋น ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ์ด๋ ์์ฒญ์ ๊ฒฝ๋ก(Routing)๋ฅผ ๋ถ์ํ์ฌ ์ ์ ํ ํธ๋ค๋ฌ(Handler)์๊ฒ ์ ๋ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์น ํ์ด์ง๋ฅผ ์์ฒญํ๋ฉด ๋ฐฑ์๋๋ ๊ทธ์ ๋ง๋ ํ์ด์ง๋ฅผ ๋ฐํํ๊ธฐ ์ํด ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.์ด๋ฌํ ๋ฐฑ์๋์ ์ญํ ์ ์๋ฐ๋ก ๊ตฌํํ ๋, ์๋ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ํน์ฑ๊ณผ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ์๋ฐ๋ ์๋ฒ ์ธก์์ ์์ ์ฑ๊ณผ ํ์ ์ฑ์ ๊ฐ์ถ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ์ ์ ํฉํ ์ธ์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด Spring Framework๋ ์๋ฐ ๊ธฐ๋ฐ์ ๋ํ์ ์ธ ๋ฐฑ์๋ ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ก์, ๊ฐ๋ฐ์๊ฐ ํจ์จ์ ์ผ๋ก ๋ฐฑ์๋๋ฅผ ๊ตฌํํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ค๋๋ค.
2) ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ
- ๋ฐฑ์๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋ก์ง๊ณผ ๊ท์น์ ๊ตฌํํฉ๋๋ค. ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ํ์ํ ๊ณ์ฐ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ธ๋ถ ์์คํ ๊ณผ์ ์ฐ๋ ๋ฑ์ ์ํํ์ฌ ์๋ต ๋ฐ์ดํฐ๋ฅผ ์์ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์์ฒญํ๋ฉด ๋ฐฑ์๋๋ ์ฌ์ฉ์ ์ธ์ฆ ๋ก์ง์ ์ฒ๋ฆฌํ๊ณ , ์ธ์ฆ๋ ์ฌ์ฉ์์๊ฒ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
3) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ
- ๋ฐฑ์๋๋ ๋ฐ์ดํฐ์ ์์ฑ, ์ฝ๊ธฐ, ์์ , ์ญ์ (CRUD) ๋ฑ์ ์ฒ๋ฆฌํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ๋ด๋นํฉ๋๋ค. ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ํ์ํ ์ ๋ณด๋ฅผ ๊ฒ์ํ์ฌ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๊ฒ์๊ธ์ ์์ฑํ๋ฉด ๋ฐฑ์๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์๊ธ์ ์ ์ฅํ๊ณ , ํ์ํ ๋ ํด๋น ๊ฒ์๊ธ์ ์กฐํํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํฉ๋๋ค.
4) ๋ณด์ ์ธ์ฆ
- ๋ฐฑ์๋๋ ์ฌ์ฉ์ ์ธ์ฆ, ๋ฐ์ดํฐ ๋ณด์, ๊ถํ ๊ด๋ฆฌ ๋ฑ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์์ ๋ด๋นํฉ๋๋ค. ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๊ณ , ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ก๋ถํฐ์ ์ ๊ทผ์ ์ฐจ๋จํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์ก์ธ์ค ๊ถํ์ด ํ์ํ ํ์ด์ง์ ์ ๊ทผํ๋ ค๊ณ ํ ๋ ๋ฐฑ์๋๋ ์ธ์ฆ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ , ๊ถํ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ ๊ทผ์ ํ์ฉํฉ๋๋ค.
๋ฐ๋ผ์, ์๋ฐ๋ฅผ ๋ฐฐ์ฐ๊ณ ์ด๋ฅผ ํ์ฉํ์ฌ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ํํ๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ฌ์ฉ์์๊ฒ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ๋ด๋นํ ์ ์์ต๋๋ค.
JAVA
์๋ฐ๋ ์น ๊ฐ๋ฐ์ ํฌํจํ ๋ค์ํ ๋ถ์ผ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ์๋ฐ๋ฅผ ๋ฐฐ์ฐ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ํ๋ซํผ ๋ ๋ฆฝ์ฑ
- ์๋ฐ๋ "Write once, run anywhere"๋ผ๋ ์ฒ ํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ ํ ๋ฒ ์์ฑํ ์ฝ๋๋ฅผ ์ด๋ค ์ด์์ฒด์ ์์๋ ์คํํ ์ ์๋ค๋ ์๋ฏธ์ ๋๋ค. ์๋ฐ๋ JVM(Java Virtual Machine)์ ํตํด ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ์ด๋ก ์ธํด ๊ฐ๋ฐ์๋ ์๋ก ๋ค๋ฅธ ์ด์์ฒด์ ์์ ์ผ๊ด๋ ๋์์ ๋ณด์ฅ๋ฐ์ ์ ์์ผ๋ฉฐ, ์ด๋ค ํ๋ซํผ์์๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์์ต๋๋ค.์๋ฐ๋ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋๋ฉฐ, ํนํ ์น ๊ฐ๋ฐ์์ ๋๋ฆฌ ํ์ฉ๋ฉ๋๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์๋ฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋ก์ง๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ ์ ์์ต๋๋ค. ์๋ฐ๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ ์ธก์์ ์์ฒญ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋, ๋ณด์ ๊ด๋ฆฌ ๋ฑ์ ์ํํ ์ ์์ผ๋ฉฐ, ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ ์ ํฉํฉ๋๋ค.
2) ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)
- ์๋ฐ๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์, ํ์ค ์ธ๊ณ์ ๊ฐ๋ ์ ๋ชจ๋ธ๋งํ๊ณ ๊ตฌํํ๋ ๋ฐ ์ ํฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ฉฐ, ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ค๋๋ค. ๋ํ, ์๋ฐ์ ๊ฐ์ฒด์งํฅ ํน์ง์ ํ์ฉํ๋ฉด ์ฝ๋๋ฅผ ๋ชจ๋ํํ๊ณ ์บก์ํํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค.
3) ๋ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ ์์ํฌ
- ์๋ฐ๋ ๋ค์ํ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Spring Framework๋ ์๋ฐ ๊ธฐ๋ฐ์ ๋ํ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ก์, ๊ฐ๋ฐ์๊ฐ ํจ์จ์ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ค๋๋ค. ์ด๋ฌํ ํ๋ ์์ํฌ๋ค์ ์๋ฐ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๋ฐ ํ์ํ ์ฌ๋ฌ ๊ธฐ๋ฅ๊ณผ ์ถ์ํ ๊ณ์ธต์ ์ ๊ณตํ์ฌ ์์ฐ์ฑ์ ํฅ์์ํต๋๋ค.
4) ์์ ์ฑ๊ณผ ๋ณด์
- ์๋ฐ๋ ํ์ ์์ ์ฑ(type safety)๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐํํ์ฌ ์์ ์ฑ๊ณผ ๋ณด์์ฑ์ ์ ๊ณตํฉ๋๋ค. ์๋ฐ๋ ์ปดํ์ผ ๊ณผ์ ์์ ํ์ ์ค๋ฅ๋ฅผ ์ก์๋ด๋ฏ๋ก, ๋ฐํ์์ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๋ํ, ์๋ฐ๋ ๋ณด์ ๊ธฐ๋ฅ์ ๋ด์ฅํ๊ณ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ณด์ ์ํ์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
5) ํฐ ์ปค๋ฎค๋ํฐ์ ํ๋ถํ ์๋ฃ
- ์๋ฐ๋ ์ค๋ ์ญ์ฌ์ ๋์ ์ฌ์ฉ์ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฐ์ ๊ดํ ํ์ต ์๋ฃ, ํํ ๋ฆฌ์ผ, ์คํ ์์ค ํ๋ก์ ํธ ๋ฑ์ด ํ๋ถํ๊ฒ ์ ๊ณต๋์ด ๋น์ ๊ณต์๋ ์ด๋ณด์๋ ์ฝ๊ฒ ํ์ตํ ์ ์์ต๋๋ค. ๋ํ, ์๋ฐ ๊ฐ๋ฐ์๋ค ๊ฐ์ ์ ๋ณด ๊ณต์ ์ ์ง์์ ๋ฐ์ ์ ์๋ ์ปค๋ฎค๋ํฐ๋ ๋ง์ด ์กด์ฌํฉ๋๋ค.
๋ํ ์๋ฐ๋ ๋ค์ํ ๊ฐ๋ฐ ๋๊ตฌ์ ์ํ๊ณ๋ฅผ ๊ฐ์ถ๊ณ ์์ด ๊ฐ๋ฐ์๋ค์๊ฒ ํธ๋ฆฌํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ํ๋ถํ ๋ฌธ์์ ์ปค๋ฎค๋ํฐ ์ง์์ ๋ฐ์ ์ ์์ผ๋ฉฐ, ํ์ต ์๋ฃ์ ์์ ๋ ๋ง์ด ์ ๊ณต๋์ด ์์ด ๋น์ ๊ณต์๋ค๋ ์ฝ๊ฒ ํ์ตํ ์ ์์ต๋๋ค,
์ง๊ธ ๋น์ฅ์ ์ดํด๊ฐ ๋์ง ์๋ ๋ง์ด ๋ง์ ์ ์์ง๋ง, ๊ฐ๋ฐ์ ์์ํ๊ธฐ ์์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ธ์ด๊ฐ ์? ์ด๋์? ์ฌ์ฉ๋๋์ง ์๋ ๊ฒ์ ๋งค์ฐ ํฐ ๋์์ด ๋๋ค๊ณ ์๊ฐํ๊ณ , ์ด๋ฌํ ์ ์์ ์ดํด๊ฐ ์๋๋ค๊ณ ํฌ๊ธฐํ๋ ๊ฒ์ด ์๋ ์ญ ํ๋ฒ ์ฝ์ด๋ณด๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค!
๋๊ธ