λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Programming/Java

1 JVM, JRE, JDK

by Dowon Kang 2023. 12. 28.

μžλ°” κ°€μƒ λ¨Έμ‹ (Java Virtual Machine, JVM)

μžλ°” κ°€μƒ λ¨Έμ‹ (Java Virtual Machine, JVM)은 μžλ°” μ–Έμ–΄λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” λ° μ‚¬μš©λ˜λŠ” κ°€μƒ μ»΄ν“¨ν„° ν™˜κ²½μ„ λ§ν•©λ‹ˆλ‹€. JVM은 μš΄μ˜ μ²΄μ œμ™€λŠ” λ…립적이며, μžλ°” ν”„λ‘œκ·Έλž¨μ„ μžλ°” λ°”μ΄νŠΈ μ½”λ“œλ‘œ λ³€ν™˜ν•˜μ—¬ μ‹€ν–‰ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ λ°”μ΄νŠΈ μ½”λ“œλŠ” μžλ°” μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄ μƒμ„±λ˜λ©°, μ΄λŠ” μ€‘κ°„ λ‹¨κ³„μ˜ μ–Έμ–΄λ‘œ λ³Ό μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

JVM은 λ‹€μ–‘ν•œ μš΄μ˜ μ²΄μ œμ—μ„œ λ™μΌν•œ μžλ°” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  μˆ˜ μžˆλ„둝 ν•©λ‹ˆλ‹€. μ΄λŠ” μžλ°”μ˜ ν° κ°•μ  μ€‘ ν•˜λ‚˜μ΄λ©°, "Write Once, Run Anywhere"λΌλŠ” κ°œλ…μ„ μ§€μ›ν•©λ‹ˆλ‹€. JVM은 μžλ°” ν”„λ‘œκ·Έλž¨μ΄ ν•˜λ“œμ›¨μ–΄ λ° μš΄μ˜ μ²΄μ œμ˜ κ΅¬μ²΄μ μΈ μ„ΈλΆ€ μ‚¬ν•­μ— μ’…μ†λ˜μ§€ μ•Šλ„둝 ν•΄μ€λ‹ˆλ‹€.

 

JVM의 μ£Όμš” ꡬ성 μš”μ†Œ

  1. 클래슀 λ‘œλ”(Class Loader): 클래슀 λ‘œλ”λŠ” μžλ°” λ°”μ΄νŠΈ μ½”λ“œλ₯Ό λ‘œλ”©ν•˜κ³  이λ₯Ό JVM λ‚΄μ˜ λ©”λͺ¨λ¦¬μ— μ μž¬ν•©λ‹ˆλ‹€. 클래슀 λ‘œλ”λŠ” ν•„μš”ν•œ ν΄λž˜μŠ€λ“€μ„ λ™μ μœΌλ‘œ λ‘œλ”©ν•˜μ—¬ μ‹€ν–‰ 쀑에도 ν”„λ‘œκ·Έλž¨μ΄ ν™•μž₯ κ°€λŠ₯ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.
  2. μ‹€ν–‰ 엔진(Execution Engine): μ‹€ν–‰ 엔진은 λ‘œλ”©λœ μžλ°” λ°”μ΄νŠΈ μ½”λ“œλ₯Ό ν•΄μ„ν•˜κ±°λ‚˜, λ•Œλ‘œλŠ” JIT(Just-In-Time) 컴파일러λ₯Ό μ‚¬μš©ν•˜μ—¬ λ„€μ΄ν‹°λΈŒ μ½”λ“œλ‘œ λ³€ν™˜ν•˜μ—¬ μ‹€ν–‰ν•©λ‹ˆλ‹€. JIT μ»΄νŒŒμΌλŸ¬λŠ” ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄ λ°”μ΄νŠΈ μ½”λ“œλ₯Ό κΈ°κ³„μ–΄λ‘œ λ³€ν™˜ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.
  3. λŸ°νƒ€μž„ 데이터 μ˜μ—­(Runtime Data Area): JVM은 ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 μ‚¬μš©λ˜λŠ” 데이터λ₯Ό μ €μž₯ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€. μ΄μ—λŠ” λ©”μ†Œλ“œ μ˜μ—­, νž™, μŠ€νƒ 등이 ν¬ν•¨λ©λ‹ˆλ‹€.
  4. 가비지 컬렉터(Garbage Collector): 가비지 μ»¬λ ‰ν„°λŠ” 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 객체λ₯Ό μžλ™μœΌλ‘œ μ‹λ³„ν•˜κ³  μ œκ±°ν•˜μ—¬ λ©”λͺ¨λ¦¬ 관리λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

JVM은 μ΄λŸ¬ν•œ κ΅¬μ„± μš”μ†Œλ“€μ„ μ‘°ν•©ν•˜μ—¬ μžλ°” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³ , μ•ˆμ •μ„±κ³Ό μ΄μ‹μ„±μ„ μ œκ³΅ν•˜λŠ” μ—­ν• μ„ ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ νŠΉμ§•λ“€μ€ μžλ°”λ₯Ό λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ μ‚¬μš©λ˜λŠ” μ–Έμ–΄λ‘œ λ§Œλ“€μ–΄ μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

 

 


 

JDK > JRE > JVM

 

JRE (Java Runtime Environment)

JREλŠ” μžλ°” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” λ° ν•„μš”ν•œ λŸ°νƒ€μž„ ν™˜κ²½μ„ μ œκ³΅ν•©λ‹ˆλ‹€. μ¦‰, JREλŠ” μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•  λ•Œ ν•„μš”ν•œ λΌμ΄λΈŒλŸ¬λ¦¬, ν΄λž˜μŠ€, μžλ°” κ°€μƒ λ¨Έμ‹ (JVM), κΈ°νƒ€ μ»΄ν¬λ„ŒνŠΈλ₯Ό ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. JREλ§ŒμœΌλ‘œλŠ” μžλ°” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜κ±°λ‚˜ μ»΄νŒŒμΌν•˜μ§€ μ•Šκ³ , μ˜€λ‘œμ§€ μ‹€ν–‰λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ£Όμš” ꡬ성 μš”μ†Œ

  1. μžλ°” 가상 λ¨Έμ‹  (JVM): μžλ°” λ°”μ΄νŠΈ μ½”λ“œλ₯Ό κΈ°κ³„μ–΄λ‘œ λ³€ν™˜ν•˜μ—¬ μ‹€ν–‰ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.
  2. μžλ°” ν΄λž˜μŠ€ λΌμ΄λΈŒλŸ¬λ¦¬: μžμ£Ό μ‚¬μš©λ˜λŠ” μžλ°” ν΄λž˜μŠ€ λ° λ©”μ†Œλ“œκ°€ ν¬ν•¨λœ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€.

 



JDK (Java Development Kit)

JDKλŠ” JREλ₯Ό ν¬ν•¨ν•˜λ©΄μ„œ, μΆ”κ°€λ‘œ μžλ°” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜κ³  μ»΄νŒŒμΌν•˜λŠ” 데 ν•„μš”ν•œ 도ꡬ듀을 μ œκ³΅ν•©λ‹ˆλ‹€. JDKλŠ” κ°œλ°œμžκ°€ μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž‘μ„±ν•˜κ³  λ””λ²„κΉ…ν•˜λ©°, ν•„μš”ν•œ 경우 μ»΄νŒŒμΌν•˜μ—¬ μ‹€ν–‰ν•  수 μžˆλŠ” 전체 개발 ν™˜κ²½μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

μ£Όμš” ꡬ성 μš”μ†Œ

  1. μžλ°” μ»΄νŒŒμΌλŸ¬ (javac): μ†ŒμŠ€ μ½”λ“œλ₯Ό λ°”μ΄νŠΈ μ½”λ“œλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.
  2. 디버깅 λ„ꡬ: μ½”λ“œ λ””버깅을 μœ„ν•œ λ„ꡬ듀이 μ œκ³΅λ©λ‹ˆλ‹€.
  3. μžλ°” API λ¬Έμ„œ μƒμ„± λ„ꡬ (Javadoc): μ†ŒμŠ€ μ½”λ“œμ—μ„œ API λ¬Έμ„œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
  4. 기타 κ°œλ°œ λ„ꡬ λ° λΌμ΄λΈŒλŸ¬λ¦¬: ν…ŒμŠ€νŠΈ λ„ꡬ, μ„±λŠ₯ λ„ꡬ, μΆ”가적인 λΌμ΄λΈŒλŸ¬λ¦¬ λ“±μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

 

κ°„λ‹¨νžˆ λ§ν•˜λ©΄, JREλŠ” μžλ°” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” λ° ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ ν™˜κ²½μ„ μ œκ³΅ν•˜κ³ , JDKλŠ” μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜κ³  μ‹€ν–‰ν•˜λŠ” λ° ν•„μš”ν•œ μ „체 λ„ꡬ와 ν™˜κ²½μ„ ν¬ν•¨ν•©λ‹ˆλ‹€. κ°œλ°œμžκ°€ μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž‘μ„±ν•˜λ €λ©΄ JDKλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜μ§€λ§Œ, μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰λ§Œ ν•  κ²½μš°μ—λŠ” JREλ§ŒμœΌλ‘œλ„ μΆ©λΆ„ν•©λ‹ˆλ‹€.

 

 


JVM (Java Virtual Machine): The Java Virtual Machine is a virtual environment for executing Java programs, interpreting Java bytecode, or compiling it into machine code for execution.

JRE (Java Runtime Environment): The Java Runtime Environment provides the runtime environment necessary to execute Java programs, including the JVM and the Java class library.

JDK (Java Development Kit): The Java Development Kit includes the JRE and provides a complete development environment with tools and libraries for writing, compiling, and running Java applications.

 

'Programming > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

6 for loop (feat. Nested, foreach)  (0) 2024.01.07
5 If & Switch (feat. break, continue)  (0) 2024.01.07
4 Operation (μ—°μ‚°)  (1) 2023.12.30
3 Casting  (0) 2023.12.29
2 Variable, Constant and Primitive Type in Java (Feat. Literal)  (0) 2023.12.29

λŒ“κΈ€