๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ ๊ณต๋ถ€/Java, Python

[Java] Java์˜ ํŠน์ง•, Java ์‹คํ–‰ ๊ณผ์ •, ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ JIT ์ปดํŒŒ์ผ๋Ÿฌ

by syLim___ 2025. 1. 2.
728x90

โœ… Java์˜ ํŠน์ง•

- Java๋Š” JVM ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์ด๋‹ค.

- Java ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ ์œ„์—์„œ ๋ฐ”๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, JVM ์œ„์—์„œ ์‹คํ–‰๋œ๋‹ค.

    ๋”ฐ๋ผ์„œ Java ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋– ํ•œ ํ•˜๋“œ์›จ์–ด๋“  JVM์ด ์„ค์น˜๋˜์–ด ์žˆ๊ธฐ๋งŒ ํ•˜๋‹ค๋ฉด,

    ์šด์˜์ฒด์ œ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  (์ฆ‰, ์ž๋ฐ” ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„) ๋™์ž‘ํ•œ๋‹ค.

    (WORA - Write Once, Run Anywhere)

 

- ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๊ณผ ํ•ด์ œ์— ์ง์ ‘ ๊ด€์—ฌํ•  ์ฑ…์ž„์„ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค.

        ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด JVM์ด ์ž๋™์œผ๋กœ ํ• ๋‹นํ•ด์ค€๋‹ค.

        ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋Š” JVM์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

    ์ฆ‰, ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ๋งŒ ์‹ ๊ฒฝ ์“ฐ๋ฉด ๋˜๊ณ , OS ๋ ˆ๋ฒจ๊นŒ์ง€๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

    ๋”ฐ๋ผ์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

- ๊ทธ๋Ÿฌ๋‚˜ C, C++๊ฐ™์€ ๋„ค์ดํ‹ฐ๋ธŒ ์–ธ์–ด์— ๋น„ํ•ด ์‹คํ–‰ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆฌ๊ณ ,

    ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ œ๋ฅผ ์ง์ ‘ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

โœ… Java ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ณผ์ •

 

- ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ .class ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

- ๋Ÿฐํƒ€์ž„์— JVM ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ .class ํŒŒ์ผ์„ ์ฝ์–ด์„œ JVM์˜ Runtime Data Area์— load ํ•œ๋‹ค. (Lazy loading ๋ฐฉ์‹)

    - ์–ธ์ œ ๋กœ๋“œ๋˜๋А๋ƒ? ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ, ํ˜ธ์ถœ, ์ฐธ์กฐ๋  ๊ฒฝ์šฐ์—

    - ์ด ๊ณผ์ •์—์„œ ๋งํ‚น๊ณผ ์ดˆ๊ธฐํ™” ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

- JVM execution engine์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด(๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ)๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค.

    - ์ด ๋•Œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ด€์—ฌํ•œ๋‹ค.

 

โœ… ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹๊ณผ JIT(Just-In-Time) ์ปดํŒŒ์ผ ๋ฐฉ์‹

 

JVM์€ JVM Runtime Data Area์— ๋กœ๋“œ๋œ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋ฅผ ๋‹ค์‹œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ๋ฒˆ์—ญํ•˜์—ฌ ์‹คํ–‰์‹œํ‚จ๋‹ค.

 

๐Ÿฅ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹

์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์—์„œ๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ฝ์–ด์„œ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰์‹œํ‚จ๋‹ค.

 

 - ํ•œ ์ค„ ๋‹จ์œ„์˜ ์‹คํ–‰์€ ๋น ๋ฅด์ง€๋งŒ,

    ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ๋งค๋ฒˆ ํ•ด์„ ํ›„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ „์ฒด ์‹คํ–‰ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

๐Ÿฅ JIT ์ปดํŒŒ์ผ ๋ฐฉ์‹

JIT ์ปดํŒŒ์ผ ๋ฐฉ์‹์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋˜์—ˆ๋‹ค.

 

- ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

- ์‹คํ–‰ ์ค‘ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ(์ด๊ฒƒ์„ ํ•ซ์ŠคํŒŸ์ด๋ผ๊ณ  ํ•œ๋‹ค)๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด, JVM์€ ์ ์ ˆํ•œ ์‹œ์ ์— ํ•ด๋‹น ๋ฐ”์ดํŠธ์ฝ”๋“œ ์ „์ฒด๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ๋งŒ๋“ค๊ณ  ์ด๊ฒƒ์„ ์บ์‹ฑํ•œ๋‹ค.

- ์ดํ›„๋ถ€ํ„ฐ๋Š” ํ•ซ์ŠคํŒŸ ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋Š” ์ธํ„ฐํ”„๋ฆฌํŒ… ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ์บ์‹ฑ๋œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•œ๋‹ค.

 

- JIT ์ปดํŒŒ์ผ ๋ฐฉ์‹์—์„œ๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ๋‹ค.

- ๊ทธ๋Ÿฌ๋‚˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

728x90