์คํ ๊ณผ์

์๋ฐ ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ ํ๋ก๊ทธ๋จ๋ณด๋ค ์๋ฐ ๊ฐ์ ๋จธ์ ์ด๋ผ๋ ํ ๋จ๊ณ๋ฅผ ๋ ๊ฑฐ์ณ์ผ ํ๋ฏ๋ก ์๋์ ์ผ๋ก ์คํ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์๋ฐ ์ปดํ์ผ๋ฌ (Java compiler)
์๋ฐ ์ปดํ์ผ๋ฌ๋ ์๋ฐ๋ฅผ ๊ฐ์ง๊ณ ์์ฑํ ์๋ฐ ์์ค ์ฝ๋๋ฅผ ์๋ฐ ๊ฐ์ ๋จธ์ ์ด ์ดํดํ ์ ์๋ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ์ฝ๋)๋ก ๋ณํํ๋ค. ์๋ฐ ์ปดํ์ผ๋ฌ๋ ์๋ฐ๋ฅผ ์ค์นํ๋ฉด javac.exe ์คํ ํ์ผ ํํ๋ก ์ค์น๋๋ค.
- JIT์ปดํ์ผ(Just In Time) : ์คํํ๊ฒฝ์ ๋ง๋ JVM์ ์ค์นํ๋ฉด ์ด์์ฒด์ ๋ณ๋ก ์ฝ๋๋ฅผ ์ฝ์ ์ ์๋๋ก ์ปดํ์ผ ์์ ์ ๋ง์ถฐ์ ๋ฒ์ญ
์๋ฐ ๋ฐ์ดํธ ์ฝ๋ (Java bytecode)
์๋ฐ ๊ฐ์ ๋จธ์ ์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ณํ๋ ์๋ฐ ์์ค ์ฝ๋๋ฅผ ์๋ฏธ.
์๋ฐ ์ปดํ์ผ๋ฌ์ ์ํด ๋ณํ๋๋ ์ฝ๋์ ๋ช ๋ น์ด ํฌ๊ธฐ๊ฐ 1๋ฐ์ดํธ๋ผ ๋ถ์ฌ์ง ๋ช ์นญ์ผ๋ก ์๋ฐ ๋ฐ์ดํธ ์ฝ๋์ ํ์ฅ์๋ .class์ด๋ค. ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ ์๋ฐ ๊ฐ์ ๋จธ์ ๋ง ์ค์น๋์ด ์์ผ๋ฉด ์ด๋ค ์ด์์ฒด์ ์์๋ ์คํ ๊ฐ๋ฅํ๋ค.
์๋ฐ ๊ฐ์ ๋จธ์ (java Virtual Machine, JVM)
์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํ์ํค๊ธฐ ์ํ ๊ฐ์์ ๊ธฐ๊ณ.
์๋ฐ๋ก ์์ฑ๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์๋ฐ ๊ฐ์ ๋จธ์ ์์๋ง ์คํ ๊ฐ๋ฅํ๋ฏ๋ก ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด์๋ ๋ฐ๋์ ์๋ฐ ๊ฐ์ ๋จธ์ ์ด ์ค์น๋์ด ์์ด์ผ ํ๋ค.
๋ฐ๋ผ์ ์ค๋ผํด์ ๋๋ถ๋ถ์ ์ฃผ์ ์ด์์ฒด์ ๋ฟ ์๋๋ผ ์น ๋ธ๋ผ์ฐ์ , ์ค๋งํธ ํฐ, ๊ฐ์ ๊ธฐ๊ธฐ ๋ฑ์์๋ ์๋ฐ ๊ฐ์ ๋จธ์ ์ ์์ฝ๊ฒ ์ค์นํ ์ ์๋๋ก ์ง์ํ๊ณ ์๋ค.
๋จ, JVM์ ์ด์์ฒด์ ์ ์ข ์์ ์ด๋ฏ๋ก ๊ฐ ์ด์์ฒด์ ์ ๋ง๋ ์๋ฐ ๊ฐ์ ๋จธ์ ์ ์ค์นํด์ผ ํ๋ค.
์๋ฐ ๊ฐ์ ๋จธ์ JVM ๊ตฌ์ฑ
1. ์๋ฐ ์ธํฐํ๋ฆฌํฐ(Interpreter) : ์๋ฐ ์ปดํ์ผ๋ฌ์ ์ํด ๋ณํ๋ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์ฝ๊ณ ํด์
2. ํด๋์ค ๋ก๋(class loader) : ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ๋ก๋ฉํด์ฃผ๋ ์ญํ
3. JIT ์ปดํ์ผ๋ฌ(Just-In-Time compiler) : ์คํ์ค์ธ ๋ฐํ์์ ์ค์ ๊ธฐ๊ณ์ด(์์ ์์คํ ์ฝ๋)๋ก ๋ณํํด์ฃผ๋ ์ปดํ์ผ๋ฌ
๋์ ๋ฒ์ญ(dynamic translation)์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ๊ธฐ๋ฒ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์คํ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ๊ฐ๋ฐ.
4. ๊ฐ๋น์ง ์ปฌ๋ ํฐ(garbage collector) : ๋์ด์ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ์ํด ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ์ง ์์๋ ๋๊ฒ ํจ.
์๋ฐ ๋ฐํ์ ํ๊ฒฝ (Java Runtime Environment, JRE)
๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค๊ฐ์ ์๋ฒฝํ ๋ฐ์ดํฐ ์ฐ๊ฒฐ์ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์.
- ๋ฐํ์(Runtime) : ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์์
์ฐธ๊ณ - 2023.06.27 - [sw ๊ฐ๋ฐ ๊ฐ์] - ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ
'๊ฐ๋ฐ ์ด์ผ๊ธฐ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java - ๋ณ์ (variable) (0) | 2023.06.29 |
---|---|
Java - System.out.println() (0) | 2023.06.29 |
Java - ๋ค์ด๋ก๋ ๋ฐ ํ๊ฒฝ ๋ณ์ ์ค์ ํ๊ธฐ (0) | 2023.06.28 |
Java - ๊ธฐ๋ณธ ๊ตฌ์กฐ (0) | 2023.06.28 |
Java - ๊ฐ์ (๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ) (0) | 2023.06.28 |