๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’Š Java & Kotlin & Spring/- Java & kotlin

[Java ์‹ฌํ™”] JRE์™€ JVM์€ ์–ด๋–ป๊ฒŒ Java ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ๊นŒ?

by Wonit 2019. 12. 21.

ํ•™์Šต ๋ชฉํ‘œ

 

์šฐ๋ฆฌ๊ฐ€ ์ž๋ฐ”๋ฅผ ๋ฐฐ์šฐ๋Š” ๋™์•ˆ ์‹ค์Šต์—๋งŒ ์ค‘์‹ฌ์„ ๋’€์—ˆ์ง€ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์ ์œผ๋กœ JRE๋Š” ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๊ณ  JVM์€ ์–ด๋””์„œ ์‹คํ–‰๋˜๋ฉฐ, JDK๋Š” ์™œ ์“ฐ์ด๋Š”์ง€์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ•  ๋น„์ค‘์ด ๋งค์šฐ ์ ์—ˆ๋‹ค. ์ด์ œ ์ œ๋Œ€๋กœ ํ•œ ๋ฒˆ ์•Œ์•„ ๋ณด๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋ฉฐ ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ์ง€๋ฅผ ํ•™์Šตํ•ด ๋ณด๋Š”๊ฒŒ ํญํ‘œ์ด๋‹ค.

 

JRE์™€ JVM์ด๋ž€ ๋ญ˜๊นŒ?

 

JVM (Java Virtual Machine) ๊ณผ JRE (Java Runtime Environment) ์ถ”๊ฐ€์ ์œผ๋กœ JDK (Java Development kit) ๊นŒ์ง€. ํ•ด๋‹น ์˜๋ฏธ๋ฅผ ์ •ํ™•ํžˆ๋Š” ๋ชฐ๋ผ๋„ Java ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•œ ๋ฒˆ์ฏค ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค.

 

์ด๋Š” ๊ฐ๊ฐ

  • JVM : ์ž๋ฐ” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋„๊ตฌ
  • JRE : ์ž๋ฐ”์šฉ OS
  • JDK : ๊ฐ€์ƒ PC

 

์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋Š”๋ฐ ์ด๋Š” ๋‹ค ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ธ ์ž๋ฐ”์˜ ํŠน์„ฑ์—์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ๋‹ค๋Š” ๊ฒƒ์ผ ๋ชจ๋‘๊ฐ€ ์•Œ ๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

์ด JVM๊ณผ JRE์— ๋Œ€ํ•œ ๋œป์€ ์•Œ๊ฒŒ ๋์œผ๋‚˜ ์ •ํ™•ํ•œ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ๋” ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ ์ž ์‹œ๋งŒ ๊ธฐ๋‹ค๋ฆฌ์ž.

 

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

JRE์™€ JVM์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•˜๋ ค๋ฉด ์ฒซ ๋ฒˆ์งธ๋กœ ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผ ํ•œ๋‹ค.

 

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€์˜ ๊ตฌ์กฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  1. ์ฝ”๋“œ ์‹คํ–‰ ์˜์—ญ

  2. ๋ฐ์ดํ„ฐ ์˜์—ญ

์ด๋ ‡๊ฒŒ ๋‘ ๊ฐ€์ง€์—์„œ ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ๋˜ 3๊ฐ€์ง€๋กœ ์„ธ๋ถ„ํ™” ๋˜๋Š”๋ฐ

  1. ์Šคํƒœํ‹ฑ ์˜์—ญ
  2. ์Šคํƒ ์˜์—ญ
  3. ํž™ ์˜์—ญ

๊ทธ๋ ‡๋‹ค๋ฉด ์•„๋งˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ์„ธ๋ถ„ํ™”๋œ ์„ธ ์˜์—ญ์—์„œ ๊ฐ์ž ํ•˜๋Š” ์ผ์„ ๋ถ€์—ฌํ•œ๋‹ค๋ฉด

  1. ์Šคํƒœํ‹ฑ ์˜์—ญ : ํด๋ž˜์Šค์˜ ํ™œ๋™ ์˜์—ญ
  2. ์Šคํƒ ์˜์—ญ : ๋ฉ”์„œ๋“œ์˜ ํ™œ๋™ ์˜์—ญ
  3. ํž™ ์˜์—ญ : ๋ณ€์ˆ˜ ๋ฐ ์ž„์‹œ ๋ณ€์ˆ˜๋“ค์˜ ํ™œ๋™ ์˜์—ญ

 

๊ทธ๋ ‡๋‹ค๋ฉด JRE์™€ JVM์€ ์–ด๋–ป๊ฒŒ ์“ฐ์ผ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฌํ•œ Java ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž.

 

public class Post01 {
    public static void main(String[] args) {
        System.out.println("์•ˆ๋…•ํ•˜์„ธ์šฉ~~");
    }
}

๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์ด ์ผ์–ด๋‚  ๊ฒƒ์ด๋‹ค.

 

JRE๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์— main() ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

์šฐ๋ฆฌ์˜ JRE ๊ฐ€ ๋‚˜ํƒ€๋‚˜์„œ ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์— ์žˆ๋Š” main()๋ฉ”์„œ๋“œ์˜ ์กด์žฌ๋ฅผ ์ฐพ์„ ๊ฒƒ์ด๊ณ , ๋งŒ์•ฝ์— main()๋ฉ”์„œ๋“œ์˜ ์กด์žฌ๊ฐ€ ํ™•์ธ๋œ๋‹ค๋ฉด JVM์„ ๋ถ€๋ฅธ๋‹ค.

 

JVM์ด ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

JVM์ด ๊ฐ€์žฅ ๋จผ์ € ๋ถˆ๋Ÿฌ๋“ค์–ด ์™€์„œ ํ•˜๋Š” ์ผ์€ ์ „์ฒ˜๋ฆฌ๋ผ๋Š” ๊ณผ์ •์ธ๋ฐ ๊ทธ ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.

 

JVM์€ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์„ ํ†ตํ•ด์„œ import๋œ ํด๋ž˜์Šค๋‚˜ package๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค๋†“๋Š”๋ฐ, Static ์˜์—ญ์— ์ถ”๊ฐ€์‹œํ‚จ๋‹ค.

 

์ง€๊ธˆ ์œ„์˜ ์†Œ์Šค์ฝ”๋“œ์—์„œ๋Š” System.out.println()์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Java.lang ํด๋ž˜์Šค๊ฐ€ import ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿผ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์— ์˜ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋  ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์ถ”๊ฐ€์ ์ธ import๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์ง€๋งŒ ์ถ”๊ฐ€์ ์ธ import๋Š” ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋„˜์–ด๊ฐ„๋‹ค.

 

์ถ”๊ฐ€์ ์œผ๋กœ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ import๋œ ํด๋ž˜์Šค๋ฅผ static ์˜์—ญ์— ๋ฐฐ์น˜ํ•  ๋ฟ ์•„๋‹ˆ๋ผ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ static์— ๋ฐฐ์น˜์‹œํ‚จ๋‹ค

 

๋ฉ”์„œ๋“œ๋ฅผ stack ์˜์—ญ์— ๋ฐฐ์น˜ ์‹œํ‚จ๋‹ค.

์ „์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ๋‚˜์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.


์•„๊นŒ ๋ดค๋˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ static ์˜์—ญ์€ ํด๋ž˜์Šค์˜ ํ™œ๋™ ์˜์—ญ์ด๋ผ๊ณ  ํ–ˆ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ์ฝ”๋“œ์ธ System.out.println()์€ ๋ฉ”์„œ๋“œ๋ผ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฉ”์„œ๋“œ์˜ ํ™œ๋™ ์˜์—ญ์€ Stack ์˜์—ญ์ด๋ฏ€๋กœ ์ด๋ฅผ Stack ํ”„๋ ˆ์ž„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ ๊นŒ์ง€๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

์ด๋กœ์จ ์šฐ๋ฆฌ๋Š” System.out.println("์•ˆ๋…•ํ•˜์„ธ์š”")๋ผ๋Š” ์ฝ”๋“œ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค.


์ด์™€ ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์˜ ์“ฐ์ž„๊ณผ ํ•จ๊ป˜ ์•Œ์•„๋ณด๋‹ˆ ์ •๋ง ์œ ์ตํ•œ ์‹œ๊ฐ„์ด์ง€ ์•Š์•˜๋‚˜์š”? ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— heap ์˜์—ญ์— ๋Œ€ํ•ด์„œ ๋ง ํ•ด๋ณผ๊ฒŒ์š”!!

๋Œ“๊ธ€