(1) ์๋ฐ์ ํ๋ก๊ทธ๋จ ๊ธฐ๋ณธ์ ์ธ ๋์ ๊ณผ์
[1] ์์ค ์ฝ๋ ์์ฑ -> .java ์์ค ํ์ผ ์์ฑ
[2] ์๋ฐ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด .java ์์ค ํ์ผ์ .class(๋ฐ์ดํธ ์ฝ๋) ํ์ผ๋ก ๋ณํ
[3] JVM์ ํตํด .class ํ์ผ์ ๊ธฐ๊ณ์ด๋ก ๋ณํ -> ๊ธฐ๊ณ์ด๋ ์ด์์ฒด์ ๋ฅผ ํตํด ์คํ
[4] ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด์์ฒด์ ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํจ.
* ๋ฐ์ดํธ์ฝ๋ : ์๋ฐ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด JVM์ด ์ฝ์ ์ ์๋๋ก ๋ฒ์ญ์ ํด๋์ ์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ผ๊ณ ํ๋ค.
(2) ์๋ฐ ์ปดํ์ผ๋ฌ
- ์ฌ์ฉ์๊ฐ ์ง์ ์์ฑํ .java ์์ค์ฝ๋๋ฅผ JVM ์ด ์ฝ์ ์ ์๋๋ก ๋ฐ์ดํธ์ฝ๋๋ก ๋ฒ์ญ์ ํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
- ์ปดํ์ผ ๊ณผ์ ์์ ๊ตฌ๋ฌธ ๋ถ์, ํ์ ๊ฒ์ฌ, ์ต์ ํ, ๋ฐ์ดํธ ์ฝ๋ ์์ฑ์ ํด์ค๋ค.
(3) JVM(Java Virtual Machine)
- ์๋ฐ ๋ฐ์ดํธ์ฝ๋(.class)๋ฅผ ์ฝ์ด์ ์ด์์ฒด์ ๋ CPU์ ๋ง๊ฒ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๊ณ ์คํํด์ฃผ๋ ๊ฐ์ ๋จธ์ ์ด๋ค.
- ๊ฒฐ๊ตญ ์ปดํจํฐ๋ 0๊ณผ 1์ธ ๊ธฐ๊ณ์ด ๋ฐ์ ๋ชป ์ฝ๊ธฐ ๋๋ฌธ์ ๊ทธ์ ๋ง๊ฒ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ์ ํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
- ์ด์์ฒด์ ๋ก ๋ถํฐ ๊ณต๊ฐ์ ํ ๋น ๋ฐ์ผ๋ฉด, JVM์ ํด๋น ๊ณต๊ฐ์ ์์ฒด์ ์ผ๋ก ์ ์ํด์ ์ฌ์ฉ์ ํ๊ฒ ๋๋ค.
- ์ด๋ JVM์ด ํด๋น ๊ณต๊ฐ์ ๋๋ ์ ์ด์ฉ์ ํ๋๋ฐ, ๋ํ์ ์ผ๋ก ๋ฉ์๋, ํ, ์คํ ์์ญ ๋ฑ์ผ๋ก ๋๋์ด์ง๋ค.
[1] JVM์ ์ฃผ์ ์ญํ
- ํด๋์ค ๋ก๋ : .class ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ฃผ๋ ์ญํ ์ ํจ.
- ๋ฐ์ดํธ์ฝ๋ ์คํ๊ธฐ : ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํด์ JIT ์ปดํ์ผํด์ ์คํ์ ํด์ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ : ํ / ์คํ ๊ด๋ฆฌ + ๊ฐ๋น์ง ์ปฌ๋ ์ (์๋ ๋ฉ๋ชจ๋ฆฌ ์ ๋ฆฌ) ์ญํ ์ ํด์ค.
- ์ฝ๊ฒ๋งํด, OS์์ JVM์๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น JVM์ ๊ทธ ์์์ ํ/์คํ ๋ฑ์ ์์ญ์ ๋ง๋ค์ด์ ์ด์ฉํจ.
- ๊ฒฐ๋ก ์, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ Java ํ๋ก๊ทธ๋จ์ด ์คํ์ด ๋๋ ๊ฒ์ด๋ค.
(4) ์ JVM์ด .java ์์ค ์ฝ๋๋ฅผ ์ง์ ์คํํ๋๋ก ์ ๋ง๋ ๊ฑธ๊น?
- ์๋ฐ ์ปดํ์ผ๋ฌ๋ ๊ตฌ๋ฌธ ๋ถ์, ํ์ ๊ฒ์ฌ, ์ต์ ํ ๋ฑ ๋ค์ํ ์์ ์ ํ๊ธฐ ๋๋ฌธ์ ์ค๋๊ฑธ๋ฆด ์ ์์.
- .class ๋ฐ์ดํธ ์ฝ๋๋ ์ด๋ฏธ ์ ๋ฆฌ๋ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์ดํ JVM ์คํ์ด ์คํ๋ ค ์๋ ์ธก๋ฉด์์ ์ ๋ฆฌํจ.
- ์ปดํ์ผ๋ฌ์ JVM์ ๋๋๊ฒ ๋๋ฉด ๋ค๋ฅธ ์ธ์ด๋ JVM ์์์ ์คํ์ด ๊ฐ๋ฅํ๋ค๋ ํฐ ์ฅ์ ์ด ์์.
- ์ธ์ด์์ .class๋ก ๋ณํ๋ง ํด์ฃผ๋ฉด ๊ฒฐ๊ตญ ๋ค์ํ ์ธ์ด๋ฅผ ๋ง๋ค ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
(5) ๊ฒฐ๋ก
- ์๋ฐ์ ๋ด๋ถ ๋์์ ๋ํ ๋ด์ฉ์ ๋ด์์ง๋ง, ์ดํด๋ฅผ ๋๊ณ ์ ํ๋ฉด์ ์ธ ๋ด์ฉ์ผ ๋ฟ ๋ ๊น์ ๋ด์ฉ์ด ์๋ค.
- JVM๊ณผ ์๋ฐ ์ปดํ์ผ๋ฌ ๋ ๊ฐ๋ฅผ ์ฐ๋ ๊ฑด ๋นํจ์จ ๊ฐ์ง๋ง ๋ค ์ด์ ๊ฐ ์๋ค ์ด๋ง์ด๋ค..
- ํฐ ํ์ ์ก์๊ธฐ ๋๋ฌธ์ JVM ๋ด๋ถ์ ๋์์ ์ดํด๋ณด๋ฉด ์ดํด๊ฐ ๋์ฑ ์ฌ์ธ ๊ฒ ์ด๋ค.
'โJava > ๐Java Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Enum ์ฝ๊ฒ ์ดํดํ๊ธฐ (1) | 2025.05.05 |
---|---|
[Java] Java์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋? (0) | 2025.03.06 |
[Java] ๋ณ์ ์ด๊ธฐํ์ ๋ํ ์ดํด (0) | 2024.11.05 |
[Java] Annotation ์ด๋? ( ์ ๋ ธํ ์ด์ ) (0) | 2024.11.05 |
[Java] JVM ๋์ ์๋ฆฌ (1) | 2024.10.23 |