๐Ÿ“‚์›น ๊ฐœ๋ฐœ(Web)/์ž๋ฐ”(JAVA)

JAVA ํ—ท๊ฐˆ๋ฆฌ๋Š” JDK, JRE, JVM ์ดํ•ด ๋ฐ JDK ์„ค์น˜ ๋ฐฉ๋ฒ•

๐Ÿ‘ฉ‍๐ŸŽ“์ธํ…”๋ฆฌ๊ฐ์ž๐Ÿฅ” 2024. 11. 18. 03:10

Intro. JAVA๋ž€?

  ์ž๋ฐ”๋Š” '๊ฐ€์ƒ๋จธ์‹ (VM, Virtual Machine)'์ด๋ž€ ๊ฒƒ์„ ๋งŒ๋“ค์–ด๋‘๊ณ  ๊ทธ ์œ„์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๊ฒŒ ๋งŒ๋“  ์‹œ์Šคํ…œ์ด๋‹ค. ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์—๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ์— ์ ํ•ฉํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋žจ์„ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์ƒ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ํ•œ ๋ฒˆ๋งŒ ๋งŒ๋“ค์–ด๋„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ์—์„œ ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. 

 

1. JVM, JRE, JDK๋ž€?

JDK, JRE, JVM์˜ ์ง‘ํ•ฉ๊ด€๊ณ„ โ˜ ์ถœ์ฒ˜: ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ”

 

(1) JDK(Java Development Kit)

  • ํ”„๋กœ๊ทธ๋žจ์— ํ•„์š”ํ•œ ์ž๋ฐ” ๊ฐ€์ƒ๊ธฐ๊ณ„(JVM), ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API, ์ปดํŒŒ์ผ๋Ÿฌ ๋“ฑ์˜ ๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋œ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€์ด๋‹ค. 

(2) JRE(Java Runtime Environment)

  • ํ‘œ์ค€ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ํ•„์š”ํ•œ ์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„(JVM), ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API๊ฐ€ ํฌํ•จ๋œ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€์ด๋‹ค. 

(3) JVM(Java Virtual Machine)

  • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ ์™„์ „ํ•œ ๊ธฐ๊ณ„์–ด๊ฐ€ ์•„๋‹Œ ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์šด์˜์ฒด์ œ๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. JVM์€ ์ด๊ฒƒ์„ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ€์ƒ์˜ ์šด์˜์ฒด์ œ์ด๋‹ค. 
  • '์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ƒ ๊ธฐ๊ณ„(์ปดํ“จํ„ฐ)'๋กœ, ๊ฐ€์ƒ ๊ธฐ๊ณ„(virtual machine)๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„๋œ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋œปํ•˜๋ฉฐ ์ปดํ“จํ„ฐ ์†์˜ ์ปดํ“จํ„ฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ๋กœ ๋งŒ๋“ค์–ด ์ปดํŒŒ์ผํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๊ฐ€์ƒ๋จธ์‹ ์ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋‘ ์ด ๊ฐ€์ƒ ์ปดํ“จํ„ฐ(JVM)์—์„œ๋งŒ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ JVM์ด ํ•„์š”ํ•˜๋‹ค. 
  • JDK ๋˜๋Š” JRE๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์„ค์น˜๋˜๋ฉฐ, JDK์™€ JRE๊ฐ€ ์šด์˜์ฒด์ œ๋ณ„๋กœ ์ œ๊ณต๋œ๋‹ค. 

c.f. IDE: Integrated Development Environment

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ, ์ž๋™ ์ฝ”๋“œ ์™„์„ฑ, ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ

ex) Eclipse(์ž๋ฐ”), Visual Studil(C/C++)

 

2. JVM(Java Virtual Machine)

 

  ์šฐ์ธก ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ๋Š” OS๋งŒ ๊ฑฐ์น˜๊ณ  ํ•˜๋“œ์›จ์–ด๋กœ ์ „๋‹ฌ๋˜๋Š”๋ฐ (1) Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ JVM์„ ํ•œ ๋ฒˆ ๋” ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋ฆฌ๊ณ  (2) ํ•˜๋“œ์›จ์–ด์— ๋งž๊ฒŒ ์™„์ „ํžˆ ์ปดํŒŒ์ผ ๋œ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๊ณ  ์‹คํ–‰ ์‹œ์— ํ•ด์„(interpret) ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

  ๊ทธ๋Ÿฌ๋‚˜ ์š”์ฆ˜์—” ๋ฐ”์ดํŠธ์ฝ”๋“œ(์ปดํŒŒ์ผ๋œ ์ž๋ฐ”์ฝ”๋“œ)๋ฅผ ํ•˜๋“œ์›จ์–ด์˜ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ์™€ ํ–ฅ์ƒ๋œ ์ตœ์ ํ™” ๊ธฐ์ˆ ์ด ์ ์šฉ๋˜์–ด์„œ ์†๋„์˜ ๊ฒฉ์ฐจ๋ฅผ ๋งŽ์ด ์ค„์˜€๋‹ค. 

 

 

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

 

 

  ์šด์˜์ฒด์ œ์™€ JVM ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๋‹จ๊ณ„์ด๋‹ค. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ ํ™•์žฅ์ž๊ฐ€ .java์ธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ๋‹ค. ์ด๊ฒƒ์„ ์†Œ์Šค ํŒŒ์ผ(๊ณ ๊ธ‰ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋‚ด์šฉ)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด ์†Œ์Šค ํŒŒ์ผ์„ ์ปดํŒŒ์ผ๋Ÿฌ(javac.exe)๋กœ ์ปดํŒŒ์ผํ•˜๋ฉด ํ™•์žฅ์ž๊ฐ€ .class์ธ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํŒŒ์ผ(์™„์ „ํ•œ ๊ธฐ๊ณ„์–ดX)์ด ์ƒ์„ฑ๋œ๋‹ค.

์†Œ์ŠคํŒŒ์ผ(.java) → ์ปดํŒŒ์ผ๋Ÿฌ(javac.exe) → ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํŒŒ์ผ(.class) → JVM(java.exe) → ๊ธฐ๊ณ„์–ด(OS)

 

๋ฐ”์ดํŠธ ์ฝ”๋“œ ํŒŒ์ผ์€ JVM ๊ตฌ๋™ ๋ช…๋ น์–ด(java.exe)์— ์˜ํ•ด JVM์—์„œ ํ•ด์„๋˜๊ณ  ํ•ด๋‹น ์šด์˜์ฒด์ œ์— ๋งž๊ฒŒ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ๋œ๋‹ค. ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” ํ•˜๋‚˜์ง€๋งŒ, JVM์— ์˜ํ•ด์„œ ๋ฒˆ์—ญ๋˜๋Š” ๊ธฐ๊ณ„์–ด๋Š” ์šด์˜ ์ฒด์ œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. 

 

3. JDK(Java Development Kit) ์„ค์น˜

์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Java SE(Standard Edition)์˜ ๊ตฌํ˜„์ฒด์ธ JDK๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

  • JRE = JVM + ํ‘œ์ค€ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • JDK = JRE + ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋„๊ตฌ

1. ๋‹ค์šด๋กœ๋“œ

JDK๋Š” ์˜ค๋ผํด(http://www.oracle.com) ์‚ฌ์ดํŠธ์—์„œ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•˜๋‹ค. JDK๋Š” ์šด์˜์ฒด์ œ์— ๋งž๊ฒŒ ์„ค์น˜ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

 

2. ๊ธฐ๋ณธ ์œ„์น˜

C:\program Files\Java

์ด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณด๋ฉด JDK์™€ ํ•จ๊ป˜ JRE๋„ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. JDK ๋‚ด๋ถ€์—๋„ JRE๊ฐ€ ์žˆ๊ธฐ ๋–„๋ฌธ์— ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

3. ํ™˜๊ฒฝ๋ณ€์ˆ˜

JDK ๋‚ด๋ถ€์˜ bin ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์ธ javac.exe์™€ JVM ๊ตฌ๋™ ๋ช…๋ น์–ด์ธ java.exe๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋“ค์„ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ๋„ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก(ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์“ฐ๋Š” ์ด์œ ) Path ํ™˜๊ฒฝ๋ณ€์ˆ˜์— bin ์œ„์น˜๋ฅผ ๋“ฑ๋กํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. 

Windows11  ๋‚ดPC → ์šฐํด๋ฆญ → ์†์„ฑ → ๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ • → ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • 
์‚ฌ์šฉ์ž ๋ณ€์ˆ˜: ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋ณ„๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
์‹œ์Šคํ…œ ๋ณ€์ˆ˜: ์–ด๋–ค ์‚ฌ์šฉ์ž๋“  ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์ด ์žˆ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜

 

์‹œ์Šคํ…œ ๋ณ€์ˆ˜ > ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ > [๋ณ€์ˆ˜ ์ด๋ฆ„: JAVA_HOME] > [๋ณ€์ˆ˜ ๊ฐ’: JDK๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ๋กœ(ex: C:\Program Files\Java\jdk-17]

์‹œ์Šคํ…œ ๋ณ€์ˆ˜ > ํŽธ์ง‘ > Path > [๋ณ€์ˆ˜ ์ด๋ฆ„: %JAVA_HOME%\bin]  

 

4. ์„ค์น˜ ํ™•์ธ

cmd๋ฅผ ์‹คํ–‰ํ•˜์—ฌ java -version, javac -version ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์•Œ๋งž์€ ๋ฒ„์ „์ด ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. 

 


์ฐธ๊ณ ์„œ์  | ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ” | ์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค | ์ž๋ฐ”์˜ ์ •์„ ๊ธฐ์ดˆํŽธ | THE ์นœ์ ˆํ•œ ์ž๋ฐ” ์ž…๋ฌธ