JIT COMPILER
Last updated
Last updated
JVM ๋ด์ ๊ตฌ์ฑ๋ execution engine์ ํตํด์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ํจ๋ค
๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ์คํ์ํค๋ ๊ณผ์ ์ ์ธํฐํ๋ฆฌํฐ ๋ผ๊ณ ํ๋ค
jit compiler๋ ์ธํฐํ๋ฆฌํฐ ๊ณผ์ ์์ Java ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ ์ค๋ค
๐ก ๊ทธ๋ผ ๋ฐ์ดํธ ์ฝ๋๋ ์ด๋์ ์์ฑ๋์ง?
์ฌ์ ์ ๊ตฌํํ ์์ค ์ฝ๋(.java)๋ฅผ javac๋ก ์ปดํ์ผํ์ฌ ์์ค ์ฝ๋(.class)๋ก ๋ณํํ๋ค ์ปดํ์ผ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ณดํต jar, war ํ์์ ์์ถ ํ์ผ๋ก ์์ฑ๋๋ค
์ปดํ์ผ์ด ํ์ํ ์ด์ ๋ ์๋ฐ๊ฐ ๋ง๋ ํ์ด๋ฅผ ๋ณด๋ฉด ๋ฐ๋ก ์ดํดํ ์ ์๋ค
์๋ฐ๊ฐ ์ถ๊ตฌํ๋ ํค์๋๋ โWORAโ์ด๋ค(WORA = Write Once Run Anywhere)
โ์ปดํ์ผ ํ๋ฒ์ผ๋ก ์ด๋๊ณณ์์๋ ์ด์์ ํ ์ ์๋คโ
๋ ๊ฒ์ด๋ค
๊ทธ๋์ OS์ ์๊ด์์ด JVM๋ง ์ค์น๋์ด ์์ผ๋ฉด ์ด๋๊ณณ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ํฌ์ ์๋ค
๋ํ์ ์ธ ์ปดํ์ผ ์ธ์ด๋ โCโ, โC++โ ์ด๋ค
์ปดํ์ผ ๊ณผ์ ์ ํตํด์ OS์ ์ข ์ ๋ฐ์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์ํ ์ ์์ง๋ง ํ ๊ฐ์ง ๋จ์ ์ด ์๋ค
์ปดํ์ผ๋ ์์ค ์ฝ๋๋ฅผ ๋ฐํ์์ ์คํ์ ํ๋ฒ์ ๋ง์ ์์ค ์ฝ๋๋ฅผ ์คํ์ํค๋ ๊ณผ์ ์ด ๋๋ฆฌ๋ค๋ ๊ฒ์ด๋ค
์ด๋ ํ์ผ์ด ๋ง๊ณ ์ฝ๋ ๋ผ์ธ์ด ๋ง์ผ๋ฉด ๋ง์์๋ก ๋ ๋๋ฆฌ๊ฒ ๋์ํ๊ฒ ๋๋ค
์คํ์๊ฐ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ธํฐํ๋ฆฌํฐ ๊ณผ์ ์ด ํ์ํ ๊ฒ์ด๋ค
๊ทธ๋์ ์๋ฐ๋ ์ปดํ์ผ๊ณผ ์ธํฐํ๋ฆฌํฐ๋ฅผ ํผํฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์คํ์ํจ๋ค๊ณ ํ ์ ์๋ค
๐ก ์ธํฐํ๋ฆฌํฐ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ์ง?
์ธํฐํ๋ฆฌํฐ ๊ณผ์ ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ผ์ธ๋ณ๋ก ์ฝ์ด์ ์ํ๋๋ฏ๋ก, ์ปดํ์ผ๋ก ์ํํ๋ ๊ฒ๋ณด๋จ ๋น ๋ฅผ์ ์๊ฒ ์ง๋ง ๋ฐํ์์ ์ฝ๋ ๋ผ์ธ์ ์ฝ์ด์ ์ํํ๋ค๋ณด๋ ์๋๊ฐ ๋ง์ด ๋น ๋ฅด์ง๋ ์๋ค. ๋ํ์ ์ธ ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ Python, javascript ๋ฑ์ด ์๋ค
JVM ๋ด์ execution engine์ด ์กด์ฌํ๋๋ฐ ๋ด๋ถ์๋ jit compiler๋ผ๋ ๊ตฌ์ฑ์์๊ฐ ์๋ค
jit compiler๋ฅผ ํตํด์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ๋์ํ๋ ๊ฒ์ด๋ค
jit compiler ๋ด๋ถ์๋ C1 ์ปดํ์ผ๋ฌ์ C2 ์ปดํ์ผ๋ฌ๊ฐ ์กด์ฌํ๋ค
C1 ์ปดํ์ผ๋ฌ๋ ๊ธฐ๊ณ์ด๋ก ์ปดํ์ผ๋ง ์ํํ๊ณ , C2 ์ปดํ์ผ๋ฌ๋ ์ปดํ์ผ + ์บ์ ๊ณผ์ ์ ์ํํ๊ฒ ๋๋ค
C2 ์ปดํ์ผ๋ฌ ๋๋ถ์ ์ธํฐํ๋ฆฌํฐ์ ์คํ์๊ฐ์ ๋จ์ถ ํ ์ ์๋ค
ํ์ง๋ง ๋ชจ๋ ์ฝ๋๋ฅผ C2 ๋จ๊ณ์์ ์บ์ฑํ์ง๋ ์๋๋ค
๊ทธ๋ฆฌ๊ณ ์บ์ฑ๋๋ ํฌ๊ธฐ๋ ์ ํ๋์ด ์๊ธฐ ๋๋ฌธ์, ์บ์ฑ๋์ด ์ ์ฅ๋์๋๋ผ๋ ๋ช๋ช ์ฝ๋๋ ๋ค์ ์ ๊ฑฐ๋๊ธฐ๋ ํ๋ค