JIT COMPILER

jit compiler๋Š” ๋ฌด์—‡์ธ๊ฐ€?

  • 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 ๋‹จ๊ณ„์—์„œ ์บ์‹ฑํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค

  • ๊ทธ๋ฆฌ๊ณ  ์บ์‹ฑ๋˜๋Š” ํฌ๊ธฐ๋Š” ์ œํ•œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์บ์‹ฑ๋˜์–ด ์ €์žฅ๋˜์—ˆ๋”๋ผ๋„ ๋ช‡๋ช‡ ์ฝ”๋“œ๋Š” ๋‹ค์‹œ ์ œ๊ฑฐ๋˜๊ธฐ๋„ ํ•œ๋‹ค

์ฐธ๊ณ 

Last updated