๐Ÿฅž BE
home

JDK, JRE, JVM

Date
2024/03/03
Category
Programming Language
Tag
Java
Detail

JDK (Java Development Kit)

JDK๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ ํ‚คํŠธ์˜ ์•ฝ์ž๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” SDK ํ‚คํŠธ๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ž˜์„œ JDK ์•ˆ์—๋Š” ์ž๋ฐ”๋ฅผ ๊ฐœ๋ฐœ ์‹œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊ณผ javac, javadoc ๋“ฑ์˜ ๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ , ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์œ„ํ•œ JRE๋„ ํ•จ๊ป˜ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
SDK?
SDK(Software Development Kit)๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋„๊ตฌ ๋ชจ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ™œ์šฉํ•ด ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ, ๋””๋ฒ„๊ฑฐ, API ๋“ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ํŠน์ • ํ”Œ๋žซํผ์šฉ ์•ฑ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์—๋Š” Java๋ฅผ ํฌํ•จํ•œ SDK, iOS ๊ฐœ๋ฐœ์—๋Š” Swift๊ฐ€ ํฌํ•จ๋œ iOS SDK, MS Windows ๊ฐœ๋ฐœ์—๋Š” .NET์„ ํฌํ•จํ•œ .NET Framework SDK๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

JDK Version

์ž๋ฐ”์˜ ๋ฒ„์ „์„ ํ‘œํ˜„ํ•  ๋•Œ๋Š” ๋ณดํ†ต JDK ๋˜๋Š” Java SE ๋ฒ„์ „์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.
โ€ข
Java SE(Java Standard Edition)
โ—ฆ
๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํด๋ž˜์Šค ํŒจํ‚ค์ง€๋กœ ๊ตฌ์„ฑ
โ—ฆ
PC์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์‘์šฉํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ, ์›น ๊ฐœ๋ฐœ, ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ
โ—ฆ
PC์— ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๊ฒƒ
โ€ข
Java EE(Java Enterprise Edition)
โ—ฆ
๋Œ€๊ทœ๋ชจ ๊ธฐ์—…์šฉ ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ, ๋ชจ๋ฐ”์ผํฐ, ์…‹ํƒ‘ ๋ฐ•์Šค ๋“ฑ ๊ฐœ๋ฐœ
โ€ข
Java ME(Java Micro Edition)
โ—ฆ
์ž‘์€ ๊ธฐ๊ธฐ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์ด์šฉํ•˜๋Š” ์—๋””์…˜
โ—ฆ
Java SE๋ฅผ ๋ผ์ดํŠธํ•˜๊ฒŒ ๋งŒ๋“  ๊ฒƒ
โ€ข
Java FX
โ—ฆ
๊ฐ€๋ณ๊ณ  ์˜ˆ์œ GUI๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—๋””์…˜
๋ณดํ†ต Java 11, Java 17 ๋“ฑ์˜ ๋ฒ„์ „์„ ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ JDK์˜ ๋ฒ„์ „์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
โ†’ Java๋ฅผ ์„ค์น˜ํ•œ๋‹ค == JDK๋ฅผ ์„ค์น˜ํ•œ๋‹ค

๋‹ค์–‘ํ•œ JDK

โ€ข
Oracle JDK - Oracle์—์„œ ์œ ๋กœ ๋ผ์ด์„ผ์Šค๋กœ ์ œ๊ณตํ•˜๋Š” JDK
โ€ข
Open JDK - ์œ ๋ช…ํ•œ ๋ฌด๋ฃŒ JDK
โ€ข
Azul Zulu - ์ธ์ง€๋„๊ฐ€ ๋†’์€ JDK ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, Mac ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•
โ€ข
Amazon Corretto - AWS์—์„œ ์ œ๊ณตํ•˜๋Š” JDK
โ€ข
Temurin - Eclipse์—์„œ ์ œ๊ณตํ•˜๋Š” JDK. Eclipse๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Temurin ์„ค์น˜๋ฅผ ์ถ”์ฒœ

JRE (Java Runtime Environment)

JRE๋Š” ์ž๋ฐ” ์‹คํ–‰ ํ™˜๊ฒฝ์˜ ์•ฝ์ž๋กœ, JVM๊ณผ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API๋ฅผ ํ•จ๊ป˜ ๋ฌถ์–ด์„œ ๋ฐฐํฌ๋˜๋Š” ํŒจํ‚ค์ง€์ด๋‹ค. ์ด์™ธ์—๋„ ์ž๋ฐ” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ์„ธํŒ…์ด๋‚˜ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ(jar ํŒŒ์ผ)์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
๊ฐ„๋‹จํžˆ, Java๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด JDK๊ฐ€, ์ปดํŒŒ์ผ ๋œ Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋ ค๋ฉด JRE๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
JRE๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ JDK์— ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ์— JDK๋ฅผ ์„ค์น˜ํ•˜๋ฉด ํ•จ๊ป˜ ์„ค์น˜๋œ๋‹ค.

JVM (Java Virtual Machine)

JVM์€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์•ฝ์ž๋กœ, ๊ทธ๋ƒฅ ์ž๋ฐ”๋ฅผ ๋Œ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ •๋„๋กœ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.
Java๋ผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ธ๊ธฐ ์žˆ๋Š” ํ•ต์‹ฌ ์ด์œ  ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ์ด JVM์ธ๋ฐ, JVM์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์–ป๋Š” ๊ฐ€์žฅ ํฐ ์ด์ ์€ Java ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์ œ์•ฝ ์—†์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

java.compareTo(c)

Java๋Š” OS์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. OS์— ์ข…์†๋ฐ›์ง€ ์•Š๊ณ  ์‹คํ–‰๋˜๋ ค๋ฉด OS ์œ„์—์„œ Java๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ๊ทธ๊ฒŒ ๋ฐ”๋กœ JVM์ด๋‹ค. ๋ง๊ทธ๋Œ€๋กœ ๊ฐ€์ƒ ๋จธ์‹ .

C (WOCA)

c์–ธ์–ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด exe ํŒŒ์ผ๋กœ ๋–จ์–ด์ ธ, ๊ทธ exe ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด c์–ธ์–ด ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด, ๊ธฐ๊ณ„์— ๋งž์ถฐ์ง„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐ ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ดํ•˜๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์–ด ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ(exe)์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ Binary Code(๊ธฐ๊ณ„์–ด)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๋ฅผ WOCA(Write Once, Compile Anywhere)๋ผ๊ณ  ํ•œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ด ๊ธฐ๊ณ„์–ด๋Š” ์‚ฌ์šฉํ•˜๋Š” ์šด์˜ ์ฒด์ œ์— ์ข…์†์ ์ด๋ผ๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฆฌ๋ˆ…์Šค์—์„œ ์ปดํŒŒ์ผํ•˜์—ฌ ๋งŒ๋“  ์‹คํ–‰ํŒŒ์ผ์„ ์œˆ๋„์šฐ์—์„œ ์‹คํ–‰ํ•˜๋ฉด, ๋Œ์•„๊ฐ€์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ์ด์ฒ˜๋Ÿผ OS๋งˆ๋‹ค ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— OS๋ณ„๋กœ ๋ณ„๋„์˜ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•œ ํฌ๋กœ์Šค ์ปดํŒŒ์ผ(Cross Compile)์ด ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ํฐ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ์—๋„ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ, ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์œ ์—ฐ์„ฑ๊ณผ ์ด์‹์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

Java (WORA)

์ด๋Ÿฌํ•œ OS ์˜์กด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž Java(JVM)๊ฐ€ ๋“ฑ์žฅํ•œ๋‹ค. Java ์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ ์†Œ์ŠคํŒŒ์ผ์€ ์ง์ ‘ ์šด์˜์ฒด์ œ๋กœ ๊ฐ€์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, JVM์„ ๊ฑฐ์ณ์„œ ์šด์˜์ฒด์ œ์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋ง์€ JVM๋งŒ ์žˆ์œผ๋ฉด ์šด์˜์ฒด์ œ๊ฐ€ ๋ฆฌ๋ˆ…์Šค๋“ , ๋งฅ์ด๋“  ๊ด€๊ณ„์—†์ด์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์•ฝ์—†์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ์™€ ํ•˜๋“œ์›จ์–ด/OS ์‚ฌ์ด ์ค‘๊ฐ„์—์„œ, ํ•ด๋‹น ํ•˜๋“œ์›จ์–ด/OS ํ™˜๊ฒฝ์— ์•Œ๋งž๊ฒŒ JVM์ด Byte Code๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
1.
Java Compiler๊ฐ€ Java๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค ์ฝ”๋“œ .java ํŒŒ์ผ์„ .class ํŒŒ์ผ์ธ Byte Code๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค.
2.
Byte Code๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ CPU๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์ด๊ฒƒ์ด JVM์˜ ์—ญํ• ์ด๋‹ค.
3.
JVM์ด Byte Code๋ฅผ ๊ธฐ๊ณ„์–ด(Binary Code)๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
4.
์ด๋ ‡๊ฒŒ JVM์— ์˜ํ•ด ์ปดํŒŒ์ผ๋œ ๊ธฐ๊ณ„์–ด๋Š” ๋ฐ”๋กœ CPU์—์„œ ์‹คํ–‰๋˜์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค.
์ด์ฒ˜๋Ÿผ Java๋Š” WORA(Write Once, Read Anywhere)์ด๋ผ๋Š” ์žฌ์ปดํŒŒ์ผํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  ๋ฐ”๋กœ ๊ธฐ๊ณ„๊ฐ€ ์ฝ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง„๋‹ค.
๋‹จ, ๊ฐ„๊ณผํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ ์€ JVM ์ž์ฒด๋Š” OS์— ์ข…์†์ ์ด๋ฏ€๋กœ, ๊ฐ ์šด์˜์ฒด์ œ์— ๋งž๋Š” JVM์„ ์„ค์น˜ํ•ด์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ. ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” C๋‚˜ Java๋‚˜ ๋˜‘๊ฐ™์ด ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด ๋จธ์‹ ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์—์„œ ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†๊ฒŒ ๋Š๊ปด์งˆ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ์œˆ๋„์šฐ์šฉ C์ฝ”๋“œ์™€ ๋ฆฌ๋ˆ…์Šค์šฉ C์ฝ”๋“œ๋ฅผ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์—์„œ, Java๋Š” ํ•œ ๋ฒˆ ๊ฐœ๋ฐœํ•ด๋‘๋ฉด OS์— ๋งž๋Š” JVM๋งŒ ์ž˜ ์„ค์น˜ํ•ด์ฃผ๋ฉด ์–ด๋””๋“  ๊ตฌ๋™์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— ํšจ์œจ์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์ด ๋งค์šฐ ๋†’์•„์ง„๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Java ํ”„๋กœ๊ทธ๋žจ์€ ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ๋ณด๋‹ค JVM์ด๋ผ๋Š” ํ•œ ๋‹จ๊ณ„๋ฅผ ๋” ๊ฑฐ์ณ์•ผํ•˜๋ฏ€๋กœ, ๊ฒฐ๊ตญ์€ ์ƒ๋Œ€์ ์œผ๋กœ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
์ฆ‰, Java๋Š” C์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ๋‘ ๋ฒˆ์˜ ์ปดํŒŒ์ผ๋กœ ์ธํ•œ ์†๋„์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ผ๋Š” ๋‚ด๋ถ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ด์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ์„ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๊พธ์–ด ์คŒ์œผ๋กœ์จ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ฐ€์ ธ์™”์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ C์–ธ์–ด์˜ ์‹คํ–‰ ์†๋„๋ฅผ ๋”ฐ๋ผ์žก์ง€๋Š” ๋ชปํ–ˆ๋‹ค. ๊ฒŒ์ž„์ด๋‚˜ ์ž„๋ฒ ๋””๋“œ์—์„œ C๊ณ„์—ด ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ์ด ๋•Œ๋ฌธ์ด๊ธฐ๋„ ํ•˜๋‹ค.
JIT Compiler (Just In Time Compiler) ๊ธฐ์กด์˜ ์ž๋ฐ”๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ์‹คํ–‰ํ•˜๊ฒŒ๋” ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ ธ๋‹ค. ํ•˜์ง€๋งŒ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ฐœ์ „ํ•˜๋ฉด์„œ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋„ JIT ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์„ ๋˜์–ด ์†๋„๋ฉด์—์„œ ์ƒ๋‹นํ•œ ๊ฐœ์„ ์„ ์ด๋ฃจ์—ˆ๋‹ค. JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋งค๋ฒˆ ํ•ด์„ํ•˜์ง€ ์•Š๊ณ , ์‹คํ–‰ํ•  ๋•Œ ์ปดํŒŒ์ผ์„ ํ•˜๋ฉด์„œ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์บ์‹ฑํ•œ๋‹ค. ์ดํ›„์—๋Š” ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์บ์‹ฑ๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋™์  ๋ฒˆ์—ญ(dynamic translation)์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ์ด ๊ธฐ๋ฒ•์€ ์ด์ „์˜ ์ž๋ฐ” ํ•ด์„๊ธฐ ๋ฐฉ์‹๋ณด๋‹ค ์„ฑ๋Šฅ์ด 10๋ฐฐ ~ 20๋ฐฐ ์ •๋„ ๋” ์ข‹๋‹ค.

Reference

โ˜• JDK / JRE / JVM ๊ฐœ๋… & ๊ตฌ์„ฑ ์›๋ฆฌ ๐Ÿ’ฏ ์ด์ •๋ฆฌ
์ž๋ฐ”๋ฅผ ์ฒ˜์Œ ์„ค์น˜ํ•˜๋ฉด C:\Program Files\Java ํด๋”์— ์•„๋ž˜์™€ ๊ฐ™์ด JDK์™€ JRE ๊ฐ€ ๊ฐ๊ฐ ์„ค์น˜๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด JDK์™€ JRE์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ์ง€ ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ(JVM)์€ ์–ด๋–ค์‹์œผ๋กœ ๋Œ์•„๊ฐ€๋Š”์ง€์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด์ž. JDK (Java Development Kit) JDK๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœํ‚คํŠธ(Java Development Kit)์˜ ์•ฝ์ž๋กœ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” SDK ํ‚คํŠธ๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ž˜์„œ JDK์•ˆ์—๋Š” ์ž๋ฐ”๋ฅผ ๊ฐœ๋ฐœ ์‹œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊ณผ javac, javadoc ๋“ฑ์˜ ๊ฐœ๋ฐœ ๋„๊ตฌ๋“ค์„ ํฌํ•จ๋˜์–ด ์žˆ๊ณ , ๊ฐœ๋ฐœ์„ ํ•˜๋ ค๋ฉด ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰๋„ ์‹œ์ผœ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์—์„œ ๋ฐฐ์šธ JRE(Java Runtime Environment)๋„ ํ•จ๊ป˜ ..