JVM μ΄λž€

클둜이·2020λ…„ 8μ›” 25일
0

πŸ“ μžλ°” 곡뢀 μ‹œμž‘

λŒ€ν•™κ΅ 2ν•™λ…„λ•Œ 처음으둜 μžλ°”λ₯Ό λ°°μ› λ‹€. κ·Έλ•ŒλŠ” JVM, JDK, JREκ°€ 뭔지 κΆκΈˆν•˜μ§€λ„ μ•Šκ³  κ·Έλƒ₯ 학점을 μœ„ν•΄ μ—΄μ‹¬νžˆ ν–ˆλ˜κ²ƒκ°™λ‹€. λͺ‡λ…„이 μ§€λ‚œ μ§€κΈˆ μ·¨μ€€μƒμœΌλ‘œμ„œ μžλ°”λ₯Ό λ‹€μ‹œ κ³΅λΆ€ν•˜κΈ°λ‘œ κ²°μ‹¬ν•˜λ©΄μ„œ λͺ‡λ…„전에 μ‚¬μ„œ μ•ˆμ½μ€ μžλ°” 책을 νˆλŠ”λ° λ“€μ–΄λŠ” λ΄€μ§€λ§Œ λœ»μ€ 잘 λͺ¨λ₯΄λŠ” μš©μ–΄λ“€μ΄ λ§Žμ•„μ„œ μ •λ¦¬ν•˜κΈ° μœ„ν•΄ 이 글을 μ“°κ²Œ λ˜μ—ˆλ‹€.

JVM μ΄λž€?

JVMμ΄λž€ μžλ°” 가상 기계(JVM: Java Virtual Machine) 이닀.
μžλ°” ν”„λ‘œκ·Έλž¨μ€ μ™„μ „ν•œ 기계어가 μ•„λ‹Œ, 쀑간 λ‹¨κ³„μ˜ λ°”μ΄νŠΈ μ½”λ“œμ΄κΈ° λ•Œλ¬Έμ— JVM은 이것을 ν•΄μ„ν•˜κ³  μ‹€ν–‰ν•  수 μžˆλŠ” κ°€μƒμ˜ 운영체제 역할을 ν•œλ‹€.
μš΄μ˜μ²΄μ œλ³„λ‘œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 방법이 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— μš΄μ˜μ²΄μ œμ™€ μžλ°” ν”„λ‘œκ·Έλž¨μ„ μ€‘κ³„ν•˜λŠ” JVM을 두어 μžλ°” ν”„λ‘œκ·Έλž¨μ΄ μ—¬λŸ¬ μš΄μ˜μ²΄μ œμ—μ„œ λ™μΌν•œ μ‹€ν–‰ κ²°κ³Όκ°€ λ‚˜μ˜€κ²Œ ν•œλ‹€.
ν•˜μ§€λ§Œ JVM은 μš΄μ˜μ²΄μ œμ— μ’…μ†μ μ΄λΌμ„œ μš΄μ˜μ²΄μ œμ— 맞게 μ„€μΉ˜ν•΄μ•Όν•œλ‹€.

μžλ°” ν”„λ‘œκ·Έλž¨μ˜ 싀행단계

  1. ν™•μž₯μžκ°€ .java인 μ†ŒμŠ€ νŒŒμΌμ„ 컴파일러 (javac.exe)둜 μ»΄νŒŒμΌν•œλ‹€.
  2. μ»΄νŒŒμΌν•˜λ©΄ ν™•μž₯μžκ°€ .class인 λ°”μ΄νŠΈ μ½”λ“œ 파일이 μƒμ„±λœλ‹€.
  3. λ°”μ΄νŠΈ μ½”λ“œ νŒŒμΌμ€ JVMμ—μ„œ ν•΄μ„λ˜κ³  ν•΄λ‹Ή 운영 μ²΄μ œμ— 맞게 κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­λœλ‹€.

ν•œ 번의 컴파일링으둜 μ‹€ν–‰ κ°€λŠ₯ν•œ 기계어가 λ§Œλ“€μ–΄μ§€μ§€ μ•Šκ³  JVM에 μ˜ν•΄ κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­λ˜κ³  μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ—, C와 C++의 컴파일 λ‹¨κ³„μ—μ„œ λ§Œλ“€μ–΄μ§„ μ™„μ „ν•œ κΈ°κ³„μ–΄λ³΄λ‹€λŠ” 속도가 느린 단점이 μžˆλ‹€.

JDK & JRE

  • JDKλŠ” μžλ°” 개발 ν‚€νŠΈμ΄λ‹€.(JDK: Java Development Kit)
    JDK = JVM + 라이브러리 API + 컴파일러
  • JREλŠ” μžλ°” μ‹€ν–‰ ν™˜κ²½μ΄λ‹€.(JRE: Java Runtime Environment)
    JRE = JVM + 라이브러리 API

μžλ°” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λ €λ©΄ JDKλ₯Ό μ‚¬μš©ν•˜λ©΄ 되고, 개발된 ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰λ§Œ ν•œλ‹€λ©΄ JRE만 μ„€μΉ˜ν•˜λ©΄ λœλ‹€.


μ°Έκ³ 

이것이 μžλ°”λ‹€-μ‹ μš©κΆŒμ˜ Java ν”„λ‘œκ·Έλž˜λ° 정볡(1)

profile
κ°œλ°œμžκ°€ λ˜κ³ μ‹Άμ–΄μš”

0개의 λŒ“κΈ€