JDK, JRE, JVM ?

i-c-a-n-d-oยท2024๋…„ 10์›” 6์ผ
0

๐Ÿค– JVM(Java Virtual Machine)

Java๋กœ ์ž‘์„ฑ๋œ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ JVM์—์„œ๋งŒ ์‹คํ–‰์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์—
์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด JVM์ด ๋ฐ˜๋“œ์‹œ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋Š”
1. ๋ฒˆ์—ญ๋ณธ์„ ๋งŒ๋“ค์–ด์„œ ์ปดํ“จํ„ฐ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ปดํŒŒ์ผ ์–ธ์–ด์™€,
2. ์‹ค์‹œ๊ฐ„ ํ†ต์—ญ์„ ํ†ตํ•ด ์ปดํ“จํ„ฐ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๊ฐ€ ์žˆ๋‹ค.

๋ฒˆ์—ญ๊ณผ ํ†ต์—ญ์ด ํ•„์š”ํ•œ ์ด์œ ?
: ์‚ฌ๋žŒ์ด ์ž…๋ ฅํ•œ ์ฝ”๋“œ๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ(๊ธฐ๊ณ„์–ด)๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์—ฌ๊ธฐ์„œ C์–ธ์–ด์™€ Java๋Š” ์ปดํŒŒ์ผ ์–ธ์–ด(๋ฒˆ์—ญ)์— ์†ํ•œ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐ ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ดํ•˜๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ(exe)๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฐ, ์ด ๊ธฐ๊ณ„์–ด๋Š” ํŠน์ • OS๋‚˜ CPU ๊ตฌ์กฐ์— ๋งž์ถฐ์ง„ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋‹ค๋ฅด๊ฒŒ ์ปดํŒŒ์ผ ๋˜๋Š” ํŠน์„ฑ์ด ์žˆ๋‹ค. === ๋‹ค๋ฅธ OS, CPU ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ํ™˜๊ฒฝ์—์„œ๋Š” ์ด ๊ธฐ๊ณ„์–ด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป !!

์ด์— ๋”ฐ๋ผ์„œ C์–ธ์–ด๋Š”, ์œˆ๋„์šฐ OS ํ™˜๊ฒฝ์—์„œ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ˆ…์Šค OS์—์„œ๋Š” ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์—†์—ˆ๋‹ค.
๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์œˆ๋„์šฐ์šฉ C ํ”„๋กœ๊ทธ๋žจ, ๋ฆฌ๋ˆ…์Šค์šฉ C ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
C์–ธ์–ด์˜ ํŠน์ง•์œผ๋กœ ์šด์˜ ์ฒด์ œ์— ์ข…์†๋œ ์–ธ์–ด & ์ด์‹์„ฑ์ด ๋‚ฎ์€ ์–ธ์–ด
๋ผ๊ณ  ํ•œ๋‹ค.

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

๋ฐ˜๋ฉด C์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ,
JVM ์ด๋ผ๋Š” ํ•œ ๋‹จ๊ณ„๋ฅผ ๋” ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆฐ ์‹คํ–‰ ์†๋„๊ฐ€ ๋‹จ์ ์ด ๋œ๋‹ค(์ปดํŒŒ์ผ ๊ณผ์ •์ด 2๋ฒˆ ํ•„์š”ํ•จ).

Java๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ .class ๋ผ๋Š” ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜์ด ๋œ๋‹ค.
๋ณ€ํ™˜๋œ .class ํŒŒ์ผ์€ JVM ์œ„์—์„œ ์ž‘๋™์ด ๋œ๋‹ค.

๐Ÿค– JRE(Java Runtime Environment)

์ž๋ฐ” ์‹คํ–‰ ํ™˜๊ฒฝ์˜ ์•ฝ์ž์ด๋‹ค.

JRE๋Š” Java Class Loader, Java Class Libraries, JVM์„ ํฌํ•จํ•œ๋‹ค.
- Java Class Loader: ํ•„์š”ํ•œ ํด๋ž˜์Šค๋“ค์„ JVM ์œ„๋กœ ์˜ฌ๋ ค์ฃผ๋Š” ์—ญํ• 
- Java Class Libraries: ์ž๋ฐ”๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

JRE๋Š” ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋™์‹œํ‚ค๋Š” ๋ฐ ์ง‘์ค‘์„ ํ•˜๊ณ  ์žˆ๋‹ค.

Java Compiler๋ฅผ ๋น„๋กฏํ•œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์š”์†Œ๋“ค์€ ์—†๊ธฐ ๋•Œ๋ฌธ์—,
Java ์ฝ”๋“œ๊ฐ€ ์ฃผ์–ด์ ธ๋„ ์ด๋ฅผ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ํด๋ž˜์Šค ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ผ์€ JRE๊ฐ€ ํ•  ์ˆ˜ ์—†๋‹ค.


๐Ÿค– JDK(Java Development Kit)

๊ฐœ๋ฐœ์ž๋“ค์ด Java๋ฅผ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” SDK(Software Development Kit)์ด๋‹ค.

JDK๋ฅผ ์„ค์น˜ํ•˜๋ฉด JRE, JVM์ด ์ž๋™์œผ๋กœ ๊ฐ™์ด ์„ค์น˜๋˜๋ฉฐ,
JRE์™€๋Š” ๋ณ„๋„๋กœ ์ปดํŒŒ์ผ๋Ÿฌ(javac), ๋””๋ฒ„๊น…(jdb), ๋ฌธ์„œ ์ƒ์„ฑ๊ธฐ(javadoc), ์•„์นด์ด๋ฒ„(jar) ๊ฐ™์€ ๋„๊ตฌ๋“ค์ด ๊ฐ–์ถ”์–ด์ ธ ์žˆ๋‹ค.




์ฐธ๊ณ ์ž๋ฃŒ

[๋ธ”๋กœ๊ทธ] JDK / JRE / JVM ๊ฐœ๋… & ๊ตฌ์„ฑ ์›๋ฆฌ ๐Ÿ’ฏ ์ด์ •๋ฆฌ

[์ธํ”„๋Ÿฐ] ์ œ๋Œ€๋กœ ํŒŒ๋Š” ์ž๋ฐ” - ์ž๋ฐ”๋Š” ์–ด๋–ค ์–ธ์–ด์ธ๊ฐ€์š”? (+JVM, JRE, JDK) by ์–„์ฝ”

[๋ธ”๋กœ๊ทธ] Tecoble - JVM์— ๊ด€ํ•˜์—ฌ

[๋ธ”๋กœ๊ทธ] JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ž€? (JAVA)

profile
๋‚˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€