JAVA ์ธ์ด๋ฅผ ์ฒ์ ์ ํ ๋๊ฐ 2009๋ ์ด์๋ค. ๊ทธ๋ ๋น์์ JAVA๊ฐ ๋ฌด์์ธ์ง ์ด๋ป๊ฒ ์ฌ์ฉ๋๋๊ฑด์ง๋ ๋ชจ๋ฅธ์ฑ ๊ทธ๋ฅ ์ฌ์ฉํ๋๊ฒ ๊ฐ๋ค. ๊ทธ๋ฌ๋ค ๋ฌธ๋ ๋ด๊ฐ JAVA์ธ์ด๋ฅผ ์ฌ์ฉํด ์น ์ ํ๋ฆฌ์ผ์ด์ ๋, Bot, ์น์ฑ ํ๋ซํผ, ์์ฉํ๋ก๊ทธ๋จ ๋ฑ๋ฑ์ ๋ง๋ค์ง๋ง ๋๊ตฐ๊ฐ๊ฐ "JAVA๋ ๋ฌด์์ธ๊ฐ์?" ๋ผ๋ ์ง๋ฌธ์ ํ์๋ ๋งํ์์ด JAVA์ ๋ํด์ ์ค๋ช ์ ํ ์ ์์๊น? ํ๋ ์๋ฌธ์ด ๋ค์๊ณ ๋ด ์์ ์๊ฒ JAVA์ ๋ํด์ ์ค๋ช ํด๋ณด์๋ค. ์ ์์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ง ๋ชปํ๋ ๋๋ฅผ ๋ฐ๊ฒฌํ ์ ์์๋ค. ๊ทธ๋์ JAVA๋ ๋ฌด์์ด๊ณ JAVA์ ํน์ง์ ๋ํด์ ์์๋ณด๊ณ ์ ํ๋ค.
Java๋ ๋ฌด์์ธ๊ฐ?
์๋ฐ๋ ์ฌ ๋ง์ดํฌ๋ก์์คํ ์ฆ(Sun Microsystems, Inc)์์ ๊ฐ๋ฐํ์ฌ 1995๋ ๋์ ๊ณต์์ ์ผ๋ก ๋ฐํํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ์๋ฐ์ ๊ฐ์ฅ ์ค์ํ ํน์ง์ ์ด์์ฒด์ (Operation System)์ ๋ ๋ฆฝ์ ์ด๋ผ๋ ๊ฒ์ด๋ค. ์๋ฐ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ์ ์ข ๋ฅ์ ๊ด๊ณ์์ด ์คํ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ์ด์์ฒด์ ์ ๋ฐ๋ผ ํ๋ก๊ทธ๋จ์ ์ ํ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์คํ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฌํ ์ฅ์ ์ผ๋ก ์ธํด ์๋ฐ๋ ๋ค์ํ ๊ธฐ์ข ์ ์ปดํจํฐ์ ์ด์์ฒด์ ๊ฐ ๊ณต์กดํ๋ ์ธํฐ๋ท ํ๊ฒฝ์ ์ ํฉํ ์ธ์ด๋ก์จ ์ธํฐ๋ท์ ๋ฐ์ ๊ณผ ํจ๊ป ๋ง์ ์ฌ์ฉ์์ธต์ ํ๋ณดํ ์ ์์๋ค. ๋ํ ๊ฐ์ฒด์งํฅ๊ฐ๋ ๊ณผ ๊ธฐ์กด์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ์ธ์ด, ํนํ C++์ ์ฅ์ ์ ์ฑํํ๋ ๋์์ ์ ์ฌ์ฉ๋์ง ์๋ ๋ถ๋ถ์ ๊ณผ๊ฐํ ์ ์ธ์ํด์ผ๋ก์จ ๋น๊ต์ ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๊ฐ๊ฒฐํ ํํ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ค. ์๋ฐ๋ ํ๋ถํ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Java API)๋ฅผ ํตํด ํ๋ก๊ทธ๋๋ฐ์ ํ์ํ ์์๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์๋ฐ ํ๋ก๊ทธ๋๋จธ๋ ๋จ์ํ ์ด ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง์ ์ ํ์ฉํด๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์๋ค.
Java์ ์ญ์ฌ
์๋ฐ์ ์ญ์ฌ๋ 1991๋ ์ ์ฌ์ ์์ง๋์ด๋ค์ ์ํด์ ๊ณ ์๋ ์คํฌ(Oak)๋ผ๋ ์ธ์ด์์๋ถํฐ ์์๋์๋ค. ์ ์์ค ๊ณ ์ฌ๋ง๊ณผ ์์ ๋ฐด ํธํ์ ๊ฐ์ ์ฌ์ ์์ง๋์ด๋ค์ ์๋ ๋ชฉํ๋ ๊ฐ์ ์ ํ์ ํ์ฌ๋ ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๊ฒ์ด์๋ค. ์ฒ์์๋ C++์ ํ์ฅํด์ ์ฌ์ฉํ๋ ค ํ์ง๋ง C++๋ก๋ ๊ทธ๋ค์ ๋ชฉ์ ์ ์ด๋ฃจ๊ธฐ์ ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค. ๊ทธ๋์ C++์ ์ฅ์ ์ ๋์ ํ๊ณ ๋จ์ ์ ๋ณด์ํ ์๋ก์ด ์ธ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ์ ์ด๋ฅด๋ ๋ค. ์คํฌ๋ ์ฒ์์ ๊ฐ์ ์ ํ์ด๋ PDA์ ๊ฐ์ ์ํ๊ธฐ๊ธฐ์ ์ฌ์ฉ๋ ๋ชฉ์ ์ด์์ผ๋ ์ฌ๋ฌ ์ข ๋ฅ์ ์ด์์ฒด์ ๋ฅผ ์ฌ์ฉํ๋ ์ปดํจํฐ๋ค์ด ํต์ ํ๋ ์ธํฐ๋ท์ด ๋ฑ์ฅํ์ ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ธ ์คํฌ๊ฐ ์ด์ ์ ํฉํ๋ค๊ณ ํ๋จํ์ฌ ์คํฌ๋ฅผ ์ธํฐ๋ท์ ์ ํฉํ๋๋ก ๊ทธ ๊ฐ๋ฐ ๋ฐฉํฅ์ ๋ฐ๊พธ๋ฉด์ ์ด๋ฆ์ ์๋ฐ(JAVA)๋ก ๋ณ๊ฒฝํ์์ผ๋ฉฐ, ์๋ฐ๋ก ๊ฐ๋ฐํ ์น ๋ธ๋ผ์ฐ์ ์ ํซ ์๋ฐ(Hot Java)๋ฅผ ๋ฐํํ๊ณ ๊ทธ ๋ค์ ํด์ธ 1995๋ ๋ ์๋ฐ์ ์ ์ ๋ฒ์ ์ ๋ฐํํ๋ค.
๊ทธ ๋น์๋ง ํด๋ ์๋ฐ๋ก ์์ฑ๋ ์ ํ๋ฆฟ(Applet)์ ์ ์ ์ธ ์น ํ์ด์ง์ ์ฌ์ด๋์ ์ ๋๋ฉ์ด์ ๋ฑ์ ๋ฉํฐ๋ฏธ๋์ด์ ์ธ ์์๋ค์ ์ ๊ณตํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด์๊ธฐ ๋๋ฌธ์ ๋ง์ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ๋จ ๊ธฐ๊ฐ์ ๋ง์ ์ฌ์ฉ์์ธต์ ํ๋ณดํ ์ ์์๋ค. ๊ทธ๋ฌ๋ ๋ณด์์์ ์ด์ ๋ก ์ต์ ์น ๋ธ๋ผ์ฐ์ ธ์์ ์ ํ๋ฆฟ์ ๋ ์ด์ ์ง์ํ์ง ์๊ฒ ๋์๋ค. ๋์ ์๋ฒ ์ชฝ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ์๋ธ๋ฆฟ(Servlet)๊ณผ JSP(Java Server Pages)๊ฐ ๋ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ตฌ๊ธ์ ์ค๋งํธํฐ ์ด์์ฒด์ ์ธ ์๋๋ก์ด๋์์๋ Java๋ฅผ ์ฌ์ฉํ๋ค.
1991๋ : Sun Microsystems์์ "Oak"๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฐ๋ฐ ์์
1995๋ : Java 1.0 ๊ณต์ ๋ฐํ
1999๋ : Java 2 ๋ฑ์ฅ(J2SE, J2EE, J2ME)
2006๋ : Java์ ์คํ์์คํ(OpenJDK)
2010๋ : Oracle์ด Sun Microsystems ์ธ์
2017๋ ์ดํ : Java SE 9๋ถํฐ 6๊ฐ์๋ง๋ค ์๋ก์ด ๋ฒ์ ์ถ์
ํ์ฌ Java๋ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๋ฉฐ, ์น ๊ฐ๋ฐ(Spring), ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ(Android), ๋น ๋ฐ์ดํฐ, AI ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
Java์ธ์ด์ ํน์ง
1. ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ด๋ค.
๊ธฐ์กด์ ์ธ์ด๋ ํ ์ด์์ฒด์ ์ ๋ง๊ฒ ๊ฐ๋ฐ๋ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ์ข ๋ฅ์ ์ด์์ฒด์ ์ ์ ์ฉํ๊ธฐ ์ํด์๋ ๋ง์ ๋ ธ๋ ฅ์ด ํ์ํ์์ง๋ง, ์๋ฐ์์๋ ๋ ์ด์ ๊ทธ๋ฐ ๋ ธ๋ ฅ์ ํ์ง ์์๋ ๋๋ค. ์ด๊ฒ์ ์ผ์ข ์ ์๋ฎฌ๋ ์ดํฐ์ธ ์๋ฐ๊ฐ์๋จธ์ (JVM)์ ํตํด์ ๊ฐ๋ฅํ ๊ฒ์ธ๋ฐ, ์๋ฐ ์์ฉํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ๋ ํ๋์จ์ด๊ฐ ์๋ JVMํ๊ณ ๋ง ํต์ ํ๊ณ JVM์ด ์๋ฐ ์์ฉํ๋ก๊ทธ๋จ์ผ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ช ๋ น์ ํด๋น ์ด์์ฒด์ ๊ฐ ์ดํดํ ์ ์๋๋ก ๋ณํํ์ฌ ์ ๋ฌํ๋ค. ์๋ฐ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ด์ง๋ง JVM์ ์ด์์ฒด์ ์ ์ข ์์ ์ด์ด์ ์ฌ์์๋ ์ฌ๋ฌ ์ด์์ฒด์ ์ ์ค์นํ ์ ์๋ ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ JVM์ ์ ๊ณตํ๊ณ ์๋ค.
2. ๊ฐ์ฒด์งํฅ์ธ์ด์ด๋ค.(OOP)
์๋ฐ๋ ํ๋ก๊ทธ๋๋ฐ์ ๋์ธ๋ก ์๋ฆฌ ์ก์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ธ์ด(Object-oriented programming language)์ค์ ํ๋๋ก ๊ฐ์ฒด์งํฅ๊ฐ๋ ์ ํน์ง์ ์์, ์บก์ํ, ๋คํ์ฑ์ด ์ ์ ์ฉ๋ ์์ํ ๊ฐ์ฒด์งํฅ์ธ์ด๋ผ๋ ํ๊ฐ๋ฅผ ๋ฐ๊ณ ์๋ค.
โ OOP ( Object-Oriented Programming, OOP )
1. ์บก์ํ(Encapsulation)
๋ฐ์ดํฐ๋ฅผ private ์ผ๋ก ๊ฐ์ธ๊ณ , getter/setter ๋ฉ์๋๋ก ์ ๊ทผ ์ ์ด
2. ์์(Inheritance)
๊ธฐ์กด ํด๋์ค๋ฅผ ํ์ฅํ์ฌ ์ฝ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ (extends ํค์๋ ์ฌ์ฉ)
3. ๋คํ์ฑ(Polymorphism)
๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๋ค์ํ ๊ฐ์ฒด๋ฅผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์
4. ์ถ์ํ(Abstraction)๋ถํ์ํ ์ธ๋ถ ์ฌํญ์ ์จ๊ธฐ๊ณ ํต์ฌ ๊ธฐ๋ฅ๋ง ์ ๊ณต
3. ๋น๊ต์ ๋ฐฐ์ฐ๊ธฐ ์ฌ์ด ์ธ์ด์ด๋ค.
์๋ฐ์ ์ฐ์ฐ์์ ๊ธฐ๋ณธ๊ตฌ๋ฌธ์ C++์์ ๊ฐ์ฒด์งํฅ๊ด๋ จ ๊ตฌ๋ฌธ์ ์ค๋ชฐํก(Small talk)์ด๋ผ๋ ๊ฐ์ฒด์งํฅ์ธ์ด์์ ๊ฐ์ ธ์๋ค. ์ด๋ค ์ธ์ด์ ์ฅ์ ์ ์ทจํ๋ฉด์ ๋ณต์กํ๊ณ ๋ถํ์ํ ๋ถ๋ถ์ ๊ณผ๊ฐํ ์ ๊ฑฐํ์ฌ ๋จ์ํํจ์ผ๋ก์ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฒฐํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ํ์๋ค. ๊ฐ์ฒด์ ํฅ์ธ์ด์ ํน์ง์ธ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ ์ฉ์ด์ฑ ๋ฑ์ ๋ง์ ์ฅ์ ์๋ ๋ถ๊ตฌํ๊ณ ๋ฐฐ์ฐ๊ธฐ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ง์ ์ฌ์ฉ์์ธต์ ํ๋ณดํ์ง ๋ชปํ์ผ๋ ์๋ฐ์ ๊ฐ๊ฒฐํ๋ฉด์๋ ๋ช
๋ฃํ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๋ ์ฌ์ฉ์๋ค์ด ๊ฐ์ฒด์งํฅ๊ฐ๋
์ ๋ณด๋ค ์ฝ๊ฒ ์ดํดํ๊ณ ํ์ฉํ ์ ์๋๋ก ํ์ฌ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ๋ณํ๋์ ํฌ๊ฒ ๊ธฐ์ฌํ๋ค.
4. ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
์๋ฐ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด, ๊ฐ๋น์ง์ปฌ๋ ํฐ(Garbage Collector)๊ฐ ์๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋จธ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐ๋ก ๊ด๋ฆฌ ํ์ง ์์๋ ๋๋ค. ๊ฐ๋น์ง์ปฌ๋ ํฐ๊ฐ ์๋ค๋ฉด ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฒดํฌํ๊ณ ๋ฐํํ๋ ์ผ์ ์๋์ ์ผ๋ก ์ฒ๋ฆฌํด์ผํ ๊ฒ์ด๋ค. ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ค๋ ๊ฒ์ด ๋ค์ ๋นํจ์จ์ ์ธ ๋ฉด๋ ์์ง๋ง, ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ณด๋ค ํ๋ก๊ทธ๋๋ฐ์ ์ง์คํ ์ ์๋๋ก ๋์์ค๋ค.
5. ๋คํธ์ํฌ์ ๋ถ์ฐ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ค.
์ธํฐ๋ท๊ณผ ๋๊ท๋ชจ ๋ถ์ฐํ๊ฒฝ์ ์ผ๋์ ๋ ๊น๋ญ์ธ์ง ํ๋ถํ๊ณ ๋ค์ํ ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Java API)๋ฅผ ํตํด ๋น๊ต์ ์งง์ ์๊ฐ์ ๋คํธ์ํฌ ๊ด๋ จ ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ์ง์ํ๋ค.
6. ๋ฉํฐ์ฐ๋ ๋๋ฅผ ์ง์ํ๋ค.
๋ฉํฐ์ฐ๋ ๋(Multi-thread)์ ์ง์์ ์ฌ์ฉ๋๋ ์ด์์ฒด์ ์ ๋ฐ๋ผ ๊ตฌํ๋ฐฉ๋ฒ๋ ์์ดํ๋ฉฐ, ์ฒ๋ฆฌ๋ฐฉ์๋ ๋ค๋ฅด๋ค. ๊ทธ๋ฌ๋ ์๋ฐ์์ ๊ฐ๋ฐ๋๋ ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋จ์ ์์คํ ๊ณผ๋ ๊ด๊ณ์์ด ๊ตฌํ๊ฐ๋ฅํ๋ฉฐ, ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณต๋๋ฏ๋ก ๊ตฌํ์ด ์ฝ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ์ฐ๋ ๋์ ๋ํ ์ค์ผ์ค๋ง์ ์๋ฐ ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ด๋นํ๊ฒ ๋๋ค.
7. ๋์ ๋ก๋ฉ์ ์ง์ํ๋ค.
๋ณดํต ์๋ฐ๋ก ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๊ฐ์ ํด๋ ์ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์๋ฐ๋ ๋์ ๋ก๋ฉ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์คํ ์์ ๋ชจ๋ ํด๋์ค๊ฐ ๋ก๋ฉ๋์ง ์๊ณ ํ์ํ ์์ ์ ํด๋์ค๋ฅผ ๋ก๋ฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. ๊ทธ์ธ์๋ ์ผ๋ถ ํด๋์ค๊ฐ ๋ฒผ๊ฒฝ๋์ด๋ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์ปดํผ์ผ ํ์ง ์์๋ ๋๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์ํด๋ ๋น๊ต์ ์ ์ ์์ ๋ง์ผ๋ก๋ ์ฒ๋ฆฌํ ์ ์๋ ์ ์ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ ์ ์๋ค.
8. ๊ฐ๋ ฅํ ๋ณด์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค.
Java๋ ๋ณด์์ฑ์ด ๋์ ์ธ์ด์ ๋๋ค. ์ ์ฑ ์ฝ๋ ์คํ์ ๋ฐฉ์งํ๊ณ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋๋ก ํฉ๋๋ค.
โ Java์ ๋ณด์ ๊ธฐ๋ฅ
1. ํด๋์ค ๋ก๋(Class Loader)
์คํ ์ค์ธ Java ํ๋ก๊ทธ๋จ์ ์ ์ฑ ์ฝ๋๊ฐ ํฌํจ๋์ง ์๋๋ก ์ฐจ๋จ
2. ๋ณด์ ๊ด๋ฆฌ์ (Security Manager)
ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ, ๋คํธ์ํฌ ์ ๊ทผ ๋ฑ ๋ณด์ ์ ์ฑ ์ ์ฉ ๊ฐ๋ฅ
3. ์๋๋ฐ์ค ํ๊ฒฝ (Sandboxing)
์คํ๋๋ ์ฝ๋๊ฐ ์ง์ ๋ ํ๊ฒฝ ์์์๋ง ์๋ํ๋๋ก ์ ํ
4. ์ํธํ ์ง์
Java Cryptography Architecture(JCA), Java Security API ํ์ฉ ๊ฐ๋ฅ
Java์ธ์ด์ ์ฅ์ & ๋จ์
โ๏ธ ์ฅ์
- ํ๋ซํผ ๋ ๋ฆฝ์ฑ: JVM์ ํตํด ๋ค์ํ OS์์ ์คํ ๊ฐ๋ฅ
- ๊ฐ์ฒด ์งํฅ ์ธ์ด: ์ ์ง๋ณด์์ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ด ๋ฐ์ด๋จ
- ๊ฐ๋ ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ: ๊ฐ๋ฐ ์์ฐ์ฑ์ด ๋์
- ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(GC): ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง
- ๋ฉํฐ์ค๋ ๋ฉ ์ง์: ๋์ ์์ ์ฒ๋ฆฌ๊ฐ ๋ฐ์ด๋จ
- ๋ณด์์ฑ: ์คํ ํ๊ฒฝ์์ ๊ฐ๋ ฅํ ๋ณด์ ์ ๊ณต
- ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ฐ๋ฅ: ๊ธฐ์ ํ๊ฒฝ์์ ๋ง์ด ์ฌ์ฉ
โ ๋จ์
- ์๋ ๋ฌธ์ : C/C++๋ณด๋ค ์คํ ์๋๊ฐ ๋๋ฆผ (JVM ์คํ ๋๋ฌธ์)
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ง์: ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(GC)๋ก ์ธํด RAM ์ฌ์ฉ์ด ๋ง์
- JVM ์์กด์ฑ: JVM์ด ํ์ํ๋ฏ๋ก ์คํ ํ๊ฒฝ ์ค์ ์ด ํ์ํจ
- GUI ๊ฐ๋ฐ์ด ์ด๋ ค์: JavaFX, Swing ๋ฑ์ด ์์ง๋ง, ํ๋์ ์ธ UI ๊ฐ๋ฐ์๋ ๋ค์ ๋ถ์กฑํจ
์ Java๋ฅผ ์ฌ์ฉํด์ผ ํ๋๊ฐ?
Java๋ 1995๋ ์ถ์๋ ์ดํ ํ์ฌ๊น์ง๋ ๊พธ์คํ ์ธ๊ธฐ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ๊ทธ ์ด์ ๋ Java๊ฐ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ, ์์ ์ฑ, ํ๋ซํผ ๋ ๋ฆฝ์ฑ, ํ๋ถํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ ์ง์ ๋ฑ์ ์์ต๋๋ค. ๊ธฐ์ ํ๊ฒฝ์์ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋, ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ธ์ด๊ฐ ํ์ํฉ๋๋ค. Java๋ ์ด๋ฌํ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๋ฉฐ, ์น ์ ํ๋ฆฌ์ผ์ด์ , ๋ชจ๋ฐ์ผ(Android) ์ ํ๋ฆฌ์ผ์ด์ , ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋, ํด๋ผ์ฐ๋ ์ปดํจํ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํ๋ซํผ ๋ ๋ฆฝ์ฑ: JVM(Java Virtual Machine) ๋๋ถ์ ๋ค์ํ ์ด์์ฒด์ ์์ ์คํ ๊ฐ๋ฅ
- ๊ฐ๋ ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์: ๋ฐฉ๋ํ ํ์ค API์ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ ๊ฐ๋ฅ
- ๋ณด์์ฑ: ๊ฐ๋ ฅํ ๋ณด์ ๊ธฐ๋ฅ(JVM์ ์๋๋ฐ์ค ํ๊ฒฝ, ํด๋์ค ๋ก๋, ๋ณด์ ๋งค๋์ ๋ฑ)
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP): ์ ์ง๋ณด์์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ด ๋์ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
- ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ฐ๋ฅ: ๋๊ธฐ์ ์์ ๋ง์ด ์ฌ์ฉ (์: ๊ธ์ต, ์ ์์๊ฑฐ๋, ๊ธฐ์ ์ฉ ์ ํ๋ฆฌ์ผ์ด์ )
- ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ: ์ธ๊ณ์ ์ผ๋ก ๋ง์ ๊ฐ๋ฐ์์ ์คํ์์ค ํ๋ก์ ํธ ์กด์ฌ
JVM
JVM(Java Virtual Machine)์ '์๋ฐ๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฐ์ ๊ธฐ๊ณ'๋ผ๊ณ ํ ์ ์๋ค. ๊ฐ์ ๊ธฐ๊ณ๋ผ๋ ๋ง์ด ์ข ์ด์ํ๊ฒ ์ง๋ง ์์ด๊ถ์์๋ ์ปดํจํฐ๋ฅผ ๋จธ์ ์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๊ธฐ ๋๋ฌธ์ ๋จธ์ ์ด๋ผ๋ ์ฉ์ด๋์ '์ปดํจํฐ๋ฅผ ์ฌ์ฉํด์ ์๋ฐ๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฐ์ ์ปดํจํฐ'๋ผ๊ณ ์ดํดํ๋ฉด ์ข์ ๊ฒ์ด๋ค.
์๋ฐ๋ก ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ๊ฐ์ ์ปดํจํฐ(JVM)์์๋ง ์คํ๋๊ธฐ ๋๋ฌธ์, ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๊ธฐ ์ํด์๋ ๋ฐ๋์ JVM์ด ํ์ํ๋ค.
์ผ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋๋ OS๋ง ๊ฑฐ์น๊ณ ํ๋์จ์ด๋ก ์ ๋ฌ๋๋๋ฐ ๋นํด Java์ ํ๋ฆฌ์ผ์ด์ ์ JVM์ ํ ๋ฒ๋ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์, ํ๋์จ์ด์ ๋ง๊ฒ ์์ ํ ์ปดํ์ผ๋ ์ํ๊ฐ ์๋๊ณ ์คํ ์์ ํด์๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ฌ๋ ์์ฆ์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ํ๋์จ์ด์ ๊ธฐ๊ณ์ด๋ก ๋ฐ๋ก ๋ณํํด์ฃผ๋ JIT์ปดํ์ผ๋ฌ์ ํฅ์๋ ์ต์ ํ ๊ธฐ์ ์ด ์ ์ฉ๋์ด์ ์๋์ ๊ฒฉ์ฐจ๋ฅผ ๋ง์ด ์ค์๋ค.
@Junesker
'DEVELOPMENT > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ธ์ฝ๋ฉ(Encoding)์ด๋? ์ธ์ฝ๋ฉ ๊ฐ๋ ๊ณผ ์ข ๋ฅ(ASCII, ISO/IEC, EUC-KR, MS949, UTF-8) (0) | 2025.04.03 |
---|