Java๋ก ์์ฑ๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ JVM์์๋ง ์คํ์ด ๋๊ธฐ ๋๋ฌธ์
์๋ฐ๋ฅผ ์คํํ๋ ค๋ฉด JVM์ด ๋ฐ๋์ ์ค์น๋์ด ์์ด์ผ ํ๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋
1. ๋ฒ์ญ๋ณธ์ ๋ง๋ค์ด์ ์ปดํจํฐ์๊ฒ ์ ๋ฌํ๋ ์ปดํ์ผ ์ธ์ด์,
2. ์ค์๊ฐ ํต์ญ์ ํตํด ์ปดํจํฐ์๊ฒ ์ ๋ฌํ๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด๊ฐ ์๋ค.
๋ฒ์ญ๊ณผ ํต์ญ์ด ํ์ํ ์ด์ ?
: ์ฌ๋์ด ์ ๋ ฅํ ์ฝ๋๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋๋ก ๋ฐ์ด๋๋ฆฌ ์ฝ๋(๊ธฐ๊ณ์ด)๋ก ๋ณํํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ๊ธฐ์ C์ธ์ด์ Java๋ ์ปดํ์ผ ์ธ์ด(๋ฒ์ญ)์ ์ํ๋ค.
๊ฐ๋ฐ์๊ฐ ์์ฑํ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ ๊ธฐ๊ณ๊ฐ ์ดํดํ๋ ๊ธฐ๊ณ์ด๋ก ๋ณํํด์ ์คํ ํ๋ก๊ทธ๋จ(exe)๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๋ฐ, ์ด ๊ธฐ๊ณ์ด๋ ํน์ OS๋ CPU ๊ตฌ์กฐ์ ๋ง์ถฐ์ง ์ปดํ์ผ๋ฌ์ ์ํด ๋ค๋ฅด๊ฒ ์ปดํ์ผ ๋๋ ํน์ฑ์ด ์๋ค. === ๋ค๋ฅธ OS, CPU ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ํ๊ฒฝ์์๋ ์ด ๊ธฐ๊ณ์ด๋ฅผ ์ดํดํ ์ ์๋ค๋ ๋ป !!
์ด์ ๋ฐ๋ผ์ C์ธ์ด๋, ์๋์ฐ OS ํ๊ฒฝ์์ ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ๋ฆฌ๋
์ค OS์์๋ ์ฝ์ด๋ค์ผ ์ ์์๋ค.
๊ฐ๋ฐ์๊ฐ ์ง์ ์๋์ฐ์ฉ C ํ๋ก๊ทธ๋จ, ๋ฆฌ๋
์ค์ฉ C ํ๋ก๊ทธ๋จ์ ๊ฐ๊ฐ ๋ง๋ค์ด์ผํ๊ธฐ ๋๋ฌธ์,
C์ธ์ด์ ํน์ง์ผ๋ก ์ด์ ์ฒด์ ์ ์ข
์๋ ์ธ์ด & ์ด์์ฑ์ด ๋ฎ์ ์ธ์ด๋ผ๊ณ ํ๋ค.
ํ์ง๋ง Java ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋, C์ธ์ด์ฒ๋ผ ์ง์ ์ด์์ฒด์ ์์ ์คํ๋๋ ๊ฒ ์๋๊ณ ,
์ค๊ฐ์ JVM์ ์ฌ์ฉํ์ฌ JVM์ด ์ปดํ์ผ๋ ์ฝ๋์ ํ๋์จ์ด OS ์ค๊ฐ์์ ๊ฐ ํ๊ฒฝ์ ๋ง๊ฒ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํํด์ค๋ค.
์ด๋ก ์ธํด ๊ฐ OS ํ๊ฒฝ์ ๋ง๊ฒ ์ปดํ์ผ๋ฌ๊ฐ ์ดํดํ ์ ์๋๋ก ์ง์ ๋ณ๊ฒฝ์ด ํ์ํ๋ ๊ณผ์ ์ด ์ฌ๋ผ์ง๊ณ ,
๋ชจ๋ ํ๋ซํผ์ ์ ์ฝ์์ด ๋์ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๊ฒผ๋ค.
๋ฐ๋ฉด C์ธ์ด์ ๋ค๋ฅด๊ฒ,
JVM ์ด๋ผ๋ ํ ๋จ๊ณ๋ฅผ ๋ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ๋๋ฆฐ ์คํ ์๋๊ฐ ๋จ์ ์ด ๋๋ค(์ปดํ์ผ ๊ณผ์ ์ด 2๋ฒ ํ์ํจ).
Java๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ .class ๋ผ๋ ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ๋ก ๋ณํ์ด ๋๋ค.
๋ณํ๋ .class ํ์ผ์ JVM ์์์ ์๋์ด ๋๋ค.
์๋ฐ ์คํ ํ๊ฒฝ์ ์ฝ์์ด๋ค.
JRE๋ Java Class Loader, Java Class Libraries, JVM์ ํฌํจํ๋ค.
- Java Class Loader: ํ์ํ ํด๋์ค๋ค์ JVM ์๋ก ์ฌ๋ ค์ฃผ๋ ์ญํ
- Java Class Libraries: ์๋ฐ๋ฅผ ์คํ์ํค๋ ๋ฐ ํ์์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
JRE๋ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋ ์ค์ ํ๋ก๊ทธ๋จ์ ๊ตฌ๋์ํค๋ ๋ฐ ์ง์ค์ ํ๊ณ ์๋ค.
Java Compiler๋ฅผ ๋น๋กฏํ ๊ฐ๋ฐ์ ํ์ํ ์์๋ค์ ์๊ธฐ ๋๋ฌธ์,
Java ์ฝ๋๊ฐ ์ฃผ์ด์ ธ๋ ์ด๋ฅผ ๋ถ์ํ๊ฑฐ๋ ํด๋์ค ํ์ผ๋ก ๋ณํํ๋ ์ผ์ JRE๊ฐ ํ ์ ์๋ค.
๊ฐ๋ฐ์๋ค์ด Java๋ฅผ ์ด์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ SDK(Software Development Kit)์ด๋ค.
JDK๋ฅผ ์ค์นํ๋ฉด JRE, JVM์ด ์๋์ผ๋ก ๊ฐ์ด ์ค์น๋๋ฉฐ,
JRE์๋ ๋ณ๋๋ก ์ปดํ์ผ๋ฌ(javac), ๋๋ฒ๊น
(jdb), ๋ฌธ์ ์์ฑ๊ธฐ(javadoc), ์์นด์ด๋ฒ(jar) ๊ฐ์ ๋๊ตฌ๋ค์ด ๊ฐ์ถ์ด์ ธ ์๋ค.
[๋ธ๋ก๊ทธ] JDK / JRE / JVM ๊ฐ๋ & ๊ตฌ์ฑ ์๋ฆฌ ๐ฏ ์ด์ ๋ฆฌ
[์ธํ๋ฐ] ์ ๋๋ก ํ๋ ์๋ฐ - ์๋ฐ๋ ์ด๋ค ์ธ์ด์ธ๊ฐ์? (+JVM, JRE, JDK) by ์์ฝ