๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์ž๋ฐ” ์†Œํ”„ํŠธ์›จ์–ด (JVM, JRE, JDK)

ยท ์•ฝ 5๋ถ„

Java๋ฅผ ์„ค์น˜ํ•˜๋ ค๋Š”๋ฐ...#

์ปดํ“จํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ Java๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.

๐Ÿ”— Java SE ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€


2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-0


2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-1

์™ผ์ชฝ์€ ํ˜„์žฌ ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์ธ ๋“ฏํ•œ 13.0.1์ด๊ณ , ์˜ค๋ฅธ์ชฝ์€ ๋ณดํŽธ์ ์œผ๋กœ ๋งŽ์ด ์“ฐ์ธ๋‹ค๊ณ ํ•˜๋Š” 8๋ฒ„์ „์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™œ ํ‘œ๊ธฐ๋ฒ•์ด ํ•˜๋‚˜๋Š” 13.0.1์ด๊ณ , ํ•˜๋‚˜๋Š” 8u231์ธ๊ฐ€?


์ž๋ฐ” ๋ฒ„์ „ ํ‘œ๊ธฐ๋ฒ•#


๐Ÿ’ก Java SE 13. 0. 1 (LTS)

SE : Standard Edition 13. : ์ฃผ ๋ฒ„์ „ 0. : ๊ฐœ์„  ๋ฒ„์ „ 1 : ์—…๋ฐ์ดํŠธ ๋ฒ„์ „ (LTS) : ์žฅ๊ธฐ ์ง€์› ์„œ๋น„์Šค(Long Term Support)๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „

์œ„๋Š” ์ž๋ฐ” ๋ฒ„์ „์„ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Java SE 13.0.1 (LTS)์€ ์ฃผ ๋ฒ„์ „์ด 13์ด๊ณ , ์ˆ˜์ •์ด 1๋ฒˆ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Java 8๋ฒ„์ „๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์˜ Java SE 8u231์€ ์ฃผ ๋ฒ„์ „์ด 8์ด๊ณ , ์ˆ˜์ •์ด 231๋ฒˆ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. (๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ด๋ ‡๊ฒŒ ํ‘œ๊ธฐํ–ˆ๋‚˜)

๋˜ํ•œ ๊ทธ๋ƒฅ Java 8, Java 13 ๋ฒ„์ „์ด๋ผ๊ณ  ํŽธํ•˜๊ฒŒ ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Java SE 13์„ ์„ค์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์€ JDK 13์„ ์„ค์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์˜๋ฏธ์ด๋‹ค.

8๋ฒ„์ „์˜ ๊ฒฝ์šฐ JDK 1.8์ด๋ผ๊ณ  ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-2

๊ทผ๋ฐ JDK๊ฐ€ ๋ฌด์Šจ ๋œป์ธ๊ฐ€?


JDK๊ฐ€ ๋ญ”๋ฐ?#


JDK๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ ๋„๊ตฌ(Java Development Kit)์˜ ์•ฝ์ž์ด๋‹ค.

JDK๋Š” Java๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์ธ JRE์™€ ํ•จ๊ป˜ + ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋„๊ตฌ(javac, java ๋“ฑ)๋“ค์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ์ด๋ฅธ๋ฐ” Java Platform์ด๋‹ค.

Java๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ JDK๋กœ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค!

๊ทธ๋Ÿผ JRE๋Š”?


JRE๋Š” ๋ญ”๋ฐ?#


JRE๋Š” ์ž๋ฐ” ์‹คํ–‰ํ™˜๊ฒฝ(Java Runtime Environment)์˜ ์•ฝ์ž์ด๋‹ค.

JRE๋Š” JVM ์ด ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘์‹œํ‚ฌ ๋•Œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋“ค๊ณผ ๊ธฐํƒ€ ํŒŒ์ผ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. JRE๋Š” JVM์˜ ์‹คํ–‰ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์š”์•ฝํ•˜๋ฉด JVM + ๋Ÿฐํƒ€์ž„์— ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

๊ทธ๋Ÿผ JVM์€?


JVM์€ ๋ญ”๋ฐ?#


JVM์€ ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ (Java Virtual Machine)์˜ ์•ฝ์ž์ด๋‹ค.

JVM์€ ์ž๋ฐ” ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ(.class)์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ JVM์€ ํ”Œ๋žซํผ์— ์˜์กด์ ์ด๋‹ค. ์ฆ‰ ๋ฆฌ๋ˆ…์Šค์˜ JVM๊ณผ ์œˆ๋„์šฐ์ฆˆ์˜ JVM์€ ๋‹ค๋ฅด๋‹ค. ๋‹จ, ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋Š” ์–ด๋–ค JVM์—์„œ๋„ ๋™์ž‘์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

JVM์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  (Loads code)

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  (Verifies code)

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  (Executes code)

  • ์‹คํ–‰ํ™˜๊ฒฝ(Runtime Environment)์˜ ๊ทœ๊ฒฉ์„ ์ œ๊ณตํ•œ๋‹ค. (Provides runtime environment)

๐Ÿ’ก ์–ด๋– ํ•œ ์žฅ๋น„์—์„œ๋“ ์ง€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋ณธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ด ์ค€๋‹ค.


๊ทธ๋ฆผ์œผ๋กœ ์ •๋ฆฌ#


2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-3

๊ทธ๋ฆผ์œผ๋กœ ์š”์•ฝํ•˜์ž๋ฉด ์ด๋Ÿฌํ•˜๋‹ค.


Reference#

๐Ÿ”—[ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ”] Java 8/11 ๋‹ค์šด๋กœ๋“œ & ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ(JDK)

๐Ÿ”—[์ ํ”„ ํˆฌ ์ž๋ฐ”] JVM, JRE, JDK์˜ ์ฐจ์ด

๐Ÿ”—์ž๋ฐ” ์†Œํ”„ํŠธ์›จ์–ด(JRE, JDK, Server-JRE) ์ฐจ์ด

๐Ÿ”—[JAVA ์ž๋ฐ”] JDK, JRE, JVM ์ฐจ์ด

๐Ÿ”—JDK, JRE, ๊ทธ๋ฆฌ๊ณ  JVM์˜ ์ฐจ์ด

2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-4