๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด Java๋ ํ์ด๋ธ๋ฆฌ๋ ์ธ์ด๋ก, ์ปดํ์ผ๊ณผ ์ธํฐํ๋ฆฌํฐ์ ์ฅ์ ์ ๊ฒฐํฉํ ๋ฐฉ์์ผ๋ก ๋์ํจ
Java์ ์ปดํ์ผ๋ฌ, ์ธํฐํ๋ฆฌํฐ ๋์ ๋ฐฉ์

1. ์ปดํ์ผ ๋จ๊ณ : Java ์์ค ์ฝ๋๋ ์๋ฐ ์ปดํ์ผ๋ฌ(javac)๋ฅผ ํตํด ๋ฐ์ดํธ ์ฝ๋(.class ํ์ผ)๋ก ๋ณํ๋จ
=> ์ด ๋ฐ์ดํธ ์ฝ๋๋ ํ๋ซํผ ๋
๋ฆฝ์ ์ด๋ฉฐ Java Virtual Machine(JVM)์์ ์คํ๋ ์ ์๋ ์ค๊ฐ ์ธ์ด์
2. ์ธํฐํ๋ฆฌํฐ ๋จ๊ณ : JVM์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์๋ฐ ์ธํฐํ๋ฆฌํฐ๋ฅผ ํตํด ๊ธฐ๊ณ์ด๋ก ๋ณํํ๊ณ ์คํํจ
=> ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ผ์ธ๋ณ๋ก ํด์ํ๊ณ ์คํํ๋ ๋ฐฉ์์
3. JIT(Just-In-Time) ์ปดํ์ผ : JVM์ ์๋ฐ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์ ์ธ์๋ JIT ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ์ปดํ์ผํ ์ ์์
=> ๋ฐํ์์(์คํ ์ค)์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ์์ฃผ ์คํ๋๋ ์ฝ๋๋ฅผ ์บ์ฑํ์ฌ ์๋๋ฅผ ๋์
์ Java๋ ์ปดํ์ผ๋ฌ/์ธํฐํ๋ฆฌํฐ ๋ฅผ ๋๋ค ์ฌ์ฉํ ๊น?
ํ๋ซํผ ๋
๋ฆฝ์ฑ๊ณผ ์ฑ๋ฅ์ ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฌ์ฉํจ
์ปดํ์ผ ์ธ์ด๋ ํน์ฑ์ ์๋๊ฐ ๋น ๋ฅด๋ ํ๋ซํผ์ ์ข
์๋ ์ ๋ฐ์ ์๋๋ฐ
Java ์์ค ์ฝ๋๋ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํ์ด ๋๊ณ ์ด ๋ฐ์ดํธ ์ฝ๋๋ JVM(๊ฐ ํ๋ซํผ์ ๋ง์ถฐ์ ธ ์์)์์ ์คํ๋๊ธฐ์ ํด๋น ํ๋ซํผ์ ๊ธฐ๊ณ์ด๋ก ๋ณํํ ์ ์์ด ํ๋ซํผ ๋ ๋ฆฝ์ฑ์ ๋ฌ์ฑํจ
๋ํ, ์ปดํ์ผ ๋ฐฉ์๊ณผ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ ์ฅ์ ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋๋ฐ
์ปดํ์ผ ๋จ๊ณ์์ ์์ค ์ฝ๋๋ฅผ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํํ๋ฉฐ, ์ด๊ธฐ ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐ๊ฒฌํ ์ ์๊ณ
์ธํฐํ๋ฆฌํฐ ๋จ๊ณ์์ JVM์ด ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ผ์ธ๋ณ๋ก ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ฉฐ, ๋น ๋ฅธ ๋๋ฒ๊น
๊ณผ ์ ์ฐํ ์ฝ๋ ์คํ์ด ๊ฐ๋ฅํด์ง
(JIT ์ปดํ์ผ์ ํตํด ์์ฃผ ์คํ๋๋ ์ฝ๋๋ฅผ ์บ์ฑํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ๋ ์๋ค๊ณ ํจ)
์ฐธ๊ณ ๋ฌธํ
Java๋ ์ ์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ ๋ ๋ค ๊ฐ์ง๋๊ฐ?
1. ์ปดํ์ผ๋ฌ vs ์ธํฐํ๋ฆฌํฐ ์ปดํ์ผ๋ฌ & ์ธํฐํ๋ฆฌํฐ ๋ชจ๋ high-level language๋ฅผ machine language๋ก ๋ฒ์ญํ๋ค ์ปดํ์ผ๋ฌ๋ ์์ค ์ฝ๋(high-level language๋ก ์์ฑ) ์ ์ฒด๋ฅผ ๋ง์ปค๋ฑ์ ํตํด ํ๋ฒ์ ๋ฒ์ญํ์ฌ object file(
velog.io
https://jooona.tistory.com/157
[JAVA] JAVA๋ ์ปดํ์ผ ์ธ์ด์ผ๊น, ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ผ๊น?
์์ ๊ธ์์ ์ฐ๋ฆฌ๊ฐ ์ฝ๋ฉ ์์ ์ฌ์ฉํ๋ ์ธ์ด๋ค์ ์ปดํ์ผ ์ธ์ด์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ก ๊ตฌ๋ถํ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค. ๋ค์ ๊ธฐ์ ํ์๋ฉด, C, C++, Go ๋ฑ์ ์ธ์ด๋ ์ปดํ์ผ ์ธ์ด์ด๊ณ , Python, R, Java
jooona.tistory.com
'๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ] Concepts of Programming Languages (0) | 2025.03.29 |
---|---|
[Java] int ์ Integer ์ฐจ์ด (0) | 2025.03.21 |
[ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ] ๊ธฐ๊ณ์ด, ์ด์ ๋ธ๋ฆฌ์ด, ๊ณ ๊ธ์ธ์ด์ ์ฐจ์ด์ (C++ vs Java) (0) | 2025.03.10 |
[CS ์ ๊ณต์ง์ ๋ ธํธ] ๋ฉ๋ชจ๋ฆฌ (0) | 2025.02.24 |
[CS ์ ๊ณต์ง์ ๋ ธํธ] ์ด์์ฒด์ ์ ์ปดํจํฐ (0) | 2025.02.18 |
๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด Java๋ ํ์ด๋ธ๋ฆฌ๋ ์ธ์ด๋ก, ์ปดํ์ผ๊ณผ ์ธํฐํ๋ฆฌํฐ์ ์ฅ์ ์ ๊ฒฐํฉํ ๋ฐฉ์์ผ๋ก ๋์ํจ
Java์ ์ปดํ์ผ๋ฌ, ์ธํฐํ๋ฆฌํฐ ๋์ ๋ฐฉ์

1. ์ปดํ์ผ ๋จ๊ณ : Java ์์ค ์ฝ๋๋ ์๋ฐ ์ปดํ์ผ๋ฌ(javac)๋ฅผ ํตํด ๋ฐ์ดํธ ์ฝ๋(.class ํ์ผ)๋ก ๋ณํ๋จ
=> ์ด ๋ฐ์ดํธ ์ฝ๋๋ ํ๋ซํผ ๋
๋ฆฝ์ ์ด๋ฉฐ Java Virtual Machine(JVM)์์ ์คํ๋ ์ ์๋ ์ค๊ฐ ์ธ์ด์
2. ์ธํฐํ๋ฆฌํฐ ๋จ๊ณ : JVM์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์๋ฐ ์ธํฐํ๋ฆฌํฐ๋ฅผ ํตํด ๊ธฐ๊ณ์ด๋ก ๋ณํํ๊ณ ์คํํจ
=> ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ผ์ธ๋ณ๋ก ํด์ํ๊ณ ์คํํ๋ ๋ฐฉ์์
3. JIT(Just-In-Time) ์ปดํ์ผ : JVM์ ์๋ฐ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์ ์ธ์๋ JIT ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ์ปดํ์ผํ ์ ์์
=> ๋ฐํ์์(์คํ ์ค)์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ์์ฃผ ์คํ๋๋ ์ฝ๋๋ฅผ ์บ์ฑํ์ฌ ์๋๋ฅผ ๋์
์ Java๋ ์ปดํ์ผ๋ฌ/์ธํฐํ๋ฆฌํฐ ๋ฅผ ๋๋ค ์ฌ์ฉํ ๊น?
ํ๋ซํผ ๋
๋ฆฝ์ฑ๊ณผ ์ฑ๋ฅ์ ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฌ์ฉํจ
์ปดํ์ผ ์ธ์ด๋ ํน์ฑ์ ์๋๊ฐ ๋น ๋ฅด๋ ํ๋ซํผ์ ์ข
์๋ ์ ๋ฐ์ ์๋๋ฐ
Java ์์ค ์ฝ๋๋ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํ์ด ๋๊ณ ์ด ๋ฐ์ดํธ ์ฝ๋๋ JVM(๊ฐ ํ๋ซํผ์ ๋ง์ถฐ์ ธ ์์)์์ ์คํ๋๊ธฐ์ ํด๋น ํ๋ซํผ์ ๊ธฐ๊ณ์ด๋ก ๋ณํํ ์ ์์ด ํ๋ซํผ ๋ ๋ฆฝ์ฑ์ ๋ฌ์ฑํจ
๋ํ, ์ปดํ์ผ ๋ฐฉ์๊ณผ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ ์ฅ์ ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋๋ฐ
์ปดํ์ผ ๋จ๊ณ์์ ์์ค ์ฝ๋๋ฅผ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํํ๋ฉฐ, ์ด๊ธฐ ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐ๊ฒฌํ ์ ์๊ณ
์ธํฐํ๋ฆฌํฐ ๋จ๊ณ์์ JVM์ด ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ผ์ธ๋ณ๋ก ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ฉฐ, ๋น ๋ฅธ ๋๋ฒ๊น
๊ณผ ์ ์ฐํ ์ฝ๋ ์คํ์ด ๊ฐ๋ฅํด์ง
(JIT ์ปดํ์ผ์ ํตํด ์์ฃผ ์คํ๋๋ ์ฝ๋๋ฅผ ์บ์ฑํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ๋ ์๋ค๊ณ ํจ)
์ฐธ๊ณ ๋ฌธํ
Java๋ ์ ์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ ๋ ๋ค ๊ฐ์ง๋๊ฐ?
1. ์ปดํ์ผ๋ฌ vs ์ธํฐํ๋ฆฌํฐ ์ปดํ์ผ๋ฌ & ์ธํฐํ๋ฆฌํฐ ๋ชจ๋ high-level language๋ฅผ machine language๋ก ๋ฒ์ญํ๋ค ์ปดํ์ผ๋ฌ๋ ์์ค ์ฝ๋(high-level language๋ก ์์ฑ) ์ ์ฒด๋ฅผ ๋ง์ปค๋ฑ์ ํตํด ํ๋ฒ์ ๋ฒ์ญํ์ฌ object file(
velog.io
https://jooona.tistory.com/157
[JAVA] JAVA๋ ์ปดํ์ผ ์ธ์ด์ผ๊น, ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ผ๊น?
์์ ๊ธ์์ ์ฐ๋ฆฌ๊ฐ ์ฝ๋ฉ ์์ ์ฌ์ฉํ๋ ์ธ์ด๋ค์ ์ปดํ์ผ ์ธ์ด์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ก ๊ตฌ๋ถํ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค. ๋ค์ ๊ธฐ์ ํ์๋ฉด, C, C++, Go ๋ฑ์ ์ธ์ด๋ ์ปดํ์ผ ์ธ์ด์ด๊ณ , Python, R, Java
jooona.tistory.com
'๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ] Concepts of Programming Languages (0) | 2025.03.29 |
---|---|
[Java] int ์ Integer ์ฐจ์ด (0) | 2025.03.21 |
[ํ๋ก๊ทธ๋๋ฐ์ธ์ด๋ก ] ๊ธฐ๊ณ์ด, ์ด์ ๋ธ๋ฆฌ์ด, ๊ณ ๊ธ์ธ์ด์ ์ฐจ์ด์ (C++ vs Java) (0) | 2025.03.10 |
[CS ์ ๊ณต์ง์ ๋ ธํธ] ๋ฉ๋ชจ๋ฆฌ (0) | 2025.02.24 |
[CS ์ ๊ณต์ง์ ๋ ธํธ] ์ด์์ฒด์ ์ ์ปดํจํฐ (0) | 2025.02.18 |