Java/Java 이둠

μžλ°” ν”„λ‘œκ·Έλž¨ ꡬ동(JVM,JRE,JDK)

vividswan 2022. 3. 6. 00:30

μžλ°” ν”„λ‘œκ·Έλž¨μ˜ ꡬ동

  • μ–΄μ…ˆλΈ”λ¦¬μ–΄ : 기계어λ₯Ό μ‚¬λžŒμ΄ μ•Œμ•„λ“€μ„ 수 μžˆλ„λ‘ λ°”κΏ”μ€¬μ§€λ§Œ, 기쒅별 μ–΄μ…ˆλΈ”λ¦¬μ–΄κ°€ ν•„μš”ν•¨
  • Cμ–Έμ–΄ : ν•˜λ‚˜μ˜ μ†ŒμŠ€λ‘œ λ‹€λ₯Έ κΈ°μ’… κ°„μ˜ 이식성이 ν™•λ³΄λ˜μ—ˆμ§€λ§Œ, μš΄μ˜μ²΄μ œλ³„λ‘œ μ†ŒμŠ€ κ΅¬ν˜„ν•˜λŠ” μž‘μ—…μ΄ ν•„μš”ν•¨
  • μžλ°” : μš΄μ˜μ²΄μ œκ°€ μ–΄λ–»λ“  단 ν•˜λ‚˜μ˜ JVM(가상기계) 용 기계어λ₯Ό μƒμ„±ν•˜λ―€λ‘œ(단 기쒅별 JRE μ„ΈνŒ…μ΄ ν•„μš”), μš΄μ˜μ²΄μ œμ— 상관없이 였브젝트 파일만 있으면 싀행됨
  • μš΄μ˜μ²΄μ œμ— 상관없이 였브젝트 파일둜 μ‹€ν–‰λ˜λŠ” 이유 : .java 파일둜 μž‘μ„±ν•œ μžλ°”νŒŒμΌμ΄ .class파일둜 μ»΄νŒŒμΌλ˜μ–΄ μ‹€ν–‰λ˜λŠ”λ°, μš΄μ˜μ²΄μ œμ— λ§žλŠ” JRE만 κ°–μΆ°μ ΈμžˆμœΌλ©΄ μ»΄νŒŒμΌμ— μ˜ν•œ 싀행이 μš΄μ˜μ²΄μ œμ™€ 상관없이 λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ΄κ³ , JREλŠ” JDK에 ν¬ν•¨λ˜μ–΄ μ„€μΉ˜λœλ‹€.

JVM, JRE, JDK

  • JVM : μžλ°” 가상 기계(Java virtual machine), μžλ°”μ˜ ꡬ동 κ³Όμ • 쀑 κ΅¬λ™λ˜λŠ” κ°€μƒμ˜ 컴퓨터λ₯Ό λ§ν•œλ‹€. 물리적인 μ»΄ν“¨ν„°μ˜ ν•˜λ“œμ›¨μ–΄μ™€ 같은 역할을 ν•œλ‹€.
  • JRE : Java Runtime Environment(μžλ°” μ‹€ν–‰ ν™˜κ²½), μžλ°”μ˜ ꡬ동 쀑 JVM을 μ œμ–΄ν•˜λŠ” JVM용 OS둜써, 물리적인 μ»΄ν“¨ν„°μ˜ μš΄μ˜μ²΄μ œμ™€ 같은 역할을 ν•˜λ©°, 컴파일 ν•  λ•Œ μš΄μ˜μ²΄μ œμ— λ§žλŠ” JREλ₯Ό μ„ΈνŒ…ν•΄μ€˜μ•Ό ν•œλ‹€. μžλ°” ν”„λ‘œκ·Έλž¨ μ‹€ν–‰κΈ°(java.exe) 포함
  • JDK : Java Development Kit(μžλ°” 개발 도ꡬ), μžλ°”μ˜ ꡬ동은 JDK의 κ°œλ°œμ„ μ΄μš©ν•΄ μ΄λ£¨μ–΄μ§€λŠ”, JVM용 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œλ„κ΅¬μ΄λ©°, 물리적인 μ»΄ν“¨ν„°μ˜ μ†Œν”„νŠΈμ›¨μ–΄ 개발 도ꡬ와 같은 역할을 ν•œλ‹€. μžλ°” μ†ŒμŠ€ 컴파일러(javac.exe) 포함
  • JDKλ₯Ό μ΄μš©ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜κ³ , 이 ν”„λ‘œκ·Έλž¨μ€, JRE에 μ˜ν•΄ JVMμ—μ„œ μ‹€ν–‰λœλ‹€.

μ‹€ν–‰ ν”„λ‘œμ„ΈμŠ€

  • μ‹€ν–‰ κ·Έλ¦Ό