์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํฌ๊ฒ ์ปดํ์ผ ์ธ์ด์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ก ๋๋๋ค.
์ปดํ์ผ ์ธ์ด(C, C++ ..)๋ ๋ฒ์ญ๊ณผ ์คํ์ด ๋ฐ๋ก ์ด๋ฃจ์ด์ง๋ ์ธ์ด์ด๊ณ , ์ธํฐํ๋ฆฌํฐ ์ธ์ด(Python, JavaScript ..)๋ ๋ฒ์ญ๊ณผ ์คํ์ ๋์์ ์งํํ๋ ์ธ์ด์ด๋ค.
์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ ์์ค์ฝ๋๋ฅผ ์ค ๋จ์๋ก ๋ฒ์ญํ๊ณ ์คํํ๊ธฐ ๋๋ฌธ์ ์คํ์ด ๋๋ฆฌ์ง๋ง, ์ค๋ฅ๊ฐ ์์ผ๋ฉด ๊ทธ ์ค ์๋๋ก๋ ์์ ์คํ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น
์ด ์ฝ๋ค๋ ์ฅ์ ์ด ์๋ค. ์ปดํ์ผ ์ธ์ด๋ ์ปดํ์ผ์ด ์ค๋๊ฑธ๋ฆด ์ ์์ง๋ง ํ ๋ฒ ์ปดํ์ผ์ด ๋์ผ๋ฉด ์คํ๋ง ์ํค๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์คํ์ ๋นจ๋ฆฌ ํ ์ ์๋ค. ํ์ง๋ง ์ด์์ฒด์ ๋ง๋ค ์คํํ ์ ์๋ ๊ธฐ๊ณ์ด๊ฐ ๋ค๋ฅผ ์ ์๊ณ , ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ๊ทธ OS์ ๋ง๋ ์ธ์ด๋ก ๋ค์ ์ปดํ์ผ์ ํด์ค์ผํ๋ค.
Java๋ ์ผํ ๋ณด๋ฉด ๋น์ฐํ ์ปดํ์ผ ์ธ์ด ๊ฐ์ง๋ง, ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ํน์ง๋ ๊ฐ์ง๊ณ ์์ด์ ์ ๋งคํ๋ค. Java๋ ๋ค๋ฅธ ์ปดํ์ผ ์ธ์ด์ ๊ฐ์ด Java Compiler๋ก ์ปดํ์ผ์ ํ๊ณ , JVM์์ ์คํ์ ์ํฌ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ปดํ์ผ ๋ Java ํ์ผ(*.class)์ JVM์์ ์๋ ์๋ฐ ์ธํฐํ๋ฆฌํฐ๊ฐ ํ ์ค์ฉ ์คํ์ํค๋๋ฐ, ์ด ์ ์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ๋น์ทํ๋ค.
๋ํ, ๋ค๋ฅธ ์ปดํ์ผ ์ธ์ด์ธ C๋ C++๊ณผ๋ ๋ค๋ฅด๊ฒ ์ปดํ์ผ ๋ ํ์ผ์ ์ด์์ฒด์ ๊ฐ ๋ฐ๋ก ์คํ์ํฌ ์ ์๋ค. Java ์์ค ํ์ผ์ JVM์ด ํด์ํ ์ ์๋ Byte์ฝ๋๋ก ๋ง๋ค๊ณ (*.class ํ์ผ), ์ด ์ฝ๋๋ ๊ฐ์๋จธ์ ์์ ์คํ์ํฌ ์ ์๋ค. Byte์ฝ๋๋ ์ด์์ฒด์ ์ ์ํฅ์ ๊ฑฐ์ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์ OS์ ๋ง๋ ์ธ์ด๋ก ๋ค์ ์ปดํ์ผ ํด์ค ํ์๊ฐ ์์๋ค.
์ฆ, ๊ฐ์๋จธ์ ๋ง ์๋ค๋ฉด ์ด์์ฒด๋ CPU๋ฑ ํ๋ซํผ์ ์๊ด์์ด ์คํ์ํฌ ์ ์๊ฒ ๋์๊ณ , ๊ฒ๋ค๊ฐ ํ์
์ด ํธ๋ฆฌํ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ด๊ธฐ๊น์ง ํ Java๊ฐ ๋์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ง์ด ์ฐ์ด๊ณ ์๋ค.
Java ํ๋ซํผ์ Java ์ธ์ด๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์คํํ๊ธฐ ์ํ ์ํํธ์จ์ด ๋๋ ํ๋ก๊ทธ๋จ ๋ชจ์์ด๋ค.
Java Compiler(JAVAC), Java Virtual Machine(JVM), Garbage Collector, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์คํ ์์ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๊ฐ๋ฐ ๋ถ์ผ์ ๋ฐ๋ผ ๋ค์ํ ์ข
๋ฅ๊ฐ ์์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ฐ๋๊ฑด ์ ์ผ ๊ธฐ๋ณธ์ด ๋๋ Java SE(Standard Edition)์ด๋ค.
JDK(Java Development Kit)๋ Java ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ Java ์ปดํ์ผ๋ฌ, ๋๋ฒ๊ฑฐ, ํต์ฌ ํด๋์ค ๋ฑ์ด ํฌํจ๋์ด ์๋๋ฐ, Java 8๋ฒ์ ๊น์ง๋ JRE(Java Runtime Environment)๋ ํฌํจ๋์ด ์์๋ค. JRE๋ ํด๋์ค ํ์ผ์ ์๋ฐ ๊ฐ์๋จธ์ ์ผ๋ก ์คํํ ๋ ํ์ํ ํ๋ก๊ทธ๋จ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๊ณ ์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ(ํจ์)๋ก, ๊ฐ๋ฐ์๊ฐ ํ์๋ก ํ ๋๋ง๋ค ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์๋ค. ์ฌ๋ด์ผ๋ก ํ๋ ์์ํฌ์ ์ฐจ์ด์ ์ด๋ผ๋ฉด, ํ๋ ์์ํฌ๋ ํธ์ถ์ ํ๋ฉด ๊ฐ๋ฐ์๊ฐ ํ๋ ์์ํฌ๊ฐ ์ํค๋ ๋๋ก ์ฝ๋ฉ์ ํด์ผํ๋ ๋ฐ๋ฉด, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฃผ๋๊ถ์ด ๊ฐ๋ฐ์์๊ฒ ์๋ค.
JDK๋ GPL(General Public License)์ด๋ฉฐ ๋ฌด๋ฃ๋ก ๋ฐฐํฌ๋๊ณ ์๊ณ , ํ์ฌ JIT(Just In Time) ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
Java๋ ๊ณ์ ์
๊ทธ๋ ์ด๋ ๋์ด์ ์๋ก์ด ๋ฒ์ ์ด ๋์ค๊ณ ์๋ค. ํ์ฌ๋ Java 20๊น์ง ๋์จ ์ํ์ด๋ค.
Java ๋ฒ์ ์ ๋ณํ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด์๋ฉด, Java 8์ ๋๋ค ํํ์, ์ฐธ์กฐํ ๋ฉ์๋(Reference Type), Stream API, Optionalํด๋์ค ๋ฑ ๋ง์ ๋ฌธ๋ฒ์ ๋ณํ๊ฐ ์๊ฒผ๋ค. Java 9์ ๊ตฌ์กฐ์ ์ผ๋ก ์ญ๋๊ธ ๋ณํ๊ฐ ์์๋๋ฐ, JRE๊ฐ Java 8๊น์ง๋ง ์ง์๋ ์ด์ ๊ฐ ์ฌ๊ธฐ์ ์๋ค. ๋ฐ๋ก ๋ชจ๋ํ์ ๊ฐ๋
์ ํ์ฌํ๊ฒ ๋์๋ค. Java 8๊น์ง๋ ํจํค์ง๋ก ํด๋์ค๋ฅผ ๋ฌถ์ด์ ๊ด๋ฆฌํ๋๋ฐ, 9๋ถํฐ๋ ์ดํ๋ฆฌ์ผ์ด์
๋ฟ๋ง ์๋๋ผ JDK ์์ฒด๋ ๋ชจ๋ํ๊ฐ ๋์ด์ ์๋ก ๋
๋ฆฝ์ ์ธ ๊ตฌ์กฐ๊ฐ ๋์ด์ ์ํ๋ ๋ชจ๋๋ง ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋์๋ค. ๊ทธ๋์ JRE๋ ํ๊ธฐ๋์๊ณ , ์ดํ๋ฆฌ์ผ์ด์
๋ฐํ์๋ ํ ์ค์ด์ ํด๋ผ์ฐ๋ ํ๊ฒฝ ๋ฐฐํฌ์ ์ ์ฉํ๊ธฐ ์๋ง์ ์ธ์ด๊ฐ ๋์๋ค.
์๋ฐ๋ ์ค๊ฐ์ค๊ฐ LTS(Long Term Support) ๋ฒ์ ์ ์ถ์ํ๋๋ฐ, ์ด๋ ๊ทธ ๋ฒ์ ์ ์ต์ 5๋ ์ด์ ์ง์ํ๋ค๋ ๋ป์ด๋ค. ํ์ฌ ๋์์๋ LTS ๋ฒ์ ์ Java 8 (~ 2030), Java 11 (~ 2026), Java 17 (~ 2029)์ด ์๋ค. ๊ทธ๋์ Java๋ฅผ ์ฌ์ฉํ๋ค๋ฉด LTS ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
'๐ฅ๏ธ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Servlet๊ณผ JSP์ ์ญ์ฌ (0) | 2023.04.17 |
---|---|
[Java] JDBC(Java Database Connectivity)๋? ์์ ์ฝ๋๋ก ์๋ ๋ฐฉ๋ฒ ๋ณด๊ธฐ (0) | 2023.04.17 |
[Java] Chapter04: ๋๋ง์๊ธฐ ๊ฒ์ (Word Chain) (0) | 2023.04.10 |
[Java] final()๊ณผ public static final (0) | 2023.04.09 |
[Java] ์ ๊ทผ์ ํ์์ public static void ๋ป (0) | 2023.04.06 |