λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🌱 CS Study/μžλ°” \ μŠ€ν”„λ§

Java, JIT Compiler, JVM

by HelloRabbit 2023. 2. 8.
728x90

Goal

1. μžλ°”μ˜ 컴파일 κ³Όμ • μ΄ν•΄ν•˜κΈ°
2. JVM의 μ—­ν•  μ„€λͺ…ν•˜κΈ°

 

Q. μžλ°” μ†ŒμŠ€μ½”λ“œκ°€ 컴파일 λ˜λŠ” 과정을 μ„€λͺ…ν•΄ λ³΄μ‹œμ˜€.

A.

  1. κ°œλ°œμžκ°€ μžλ°” μ†ŒμŠ€μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€ (*.java)
  2. μžλ°” μ»΄νŒŒμΌλŸ¬κ°€ μ†ŒμŠ€μ½”λ“œ νŒŒμΌμ„ λ°”μ΄νŠΈμ½”λ“œλ‘œ 컴파일 ν•œλ‹€ (*.class)
  3. λ°”μ΄νŠΈμ½”λ“œλ₯Ό JVM (Java Virtual Machine)의 클래슀 λ‘œλ”μ— μ „λ‹¬ν•œλ‹€
  4. 클래슀 λ‘œλ”λŠ” λ™μ λ‘œλ”©μ„ 톡해 ν•„μš”ν•œ ν΄λž˜μŠ€λ“€μ„ λ‘œλ”© 및 λ§ν¬ν•˜μ—¬ JVM λ©”λͺ¨λ¦¬μ— μ˜¬λ¦°λ‹€
  5. μ‹€ν–‰ 엔진(인터프리터 λ˜λŠ” JIT 컴파일러)은 JVM λ©”λͺ¨λ¦¬μ— 올라온 λ°”μ΄νŠΈ μ½”λ“œλ“€μ„ λͺ…λ Ήμ–΄ λ‹¨μœ„λ‘œ ν•˜λ‚˜μ”© 가져와 μ‹€ν–‰ν•œλ‹€
πŸ“ λ°”μ΄νŠΈμ½”λ“œ : 각 λͺ…λ Ήμ–΄λŠ” 1λ°”μ΄νŠΈ 크기의 Opcode와 μΆ”κ°€ ν”Όμ—°μ‚°μžλ‘œ 이루어져 μžˆλŠ” 파일 (컴퓨터가 읽을 수 μ—†μŒ) 

πŸ“ 
인터프리터 : λ°”μ΄νŠΈ μ½”λ“œ λͺ…λ Ήμ–΄λ₯Ό ν•˜λ‚˜μ”© μˆœμ„œλŒ€λ‘œ 읽고 ν•΄μ„ν•΄μ„œ μ‹€ν–‰. 전체적인 μ‹€ν–‰ 속도가 느림.
πŸ“ JIT (Just-in-Time) 컴파일러 : λ°”μ΄νŠΈ μ½”λ“œ 전체λ₯Ό μ»΄νŒŒμΌν•˜μ—¬ λ°”μ΄λ„ˆλ¦¬ (컴퓨터 기계어) μ½”λ“œλ‘œ λ³€κ²½ν•˜κ³  λ°”μ΄λ„ˆλ¦¬ μ½”λ“œλ₯Ό μ‹€ν–‰. 전체적인 μ‹€ν–‰ 속도가 인터프리터보닀 빠름.

 

 

 

Q. JVM의 역할은 무엇인가?

A.

  • μžλ°”λ‘œ λ§Œλ“  μ†ŒμŠ€μ½”λ“œκ°€ μ–΄λŠ κΈ°κΈ°λ‚˜ 운영체제 μƒμ—μ„œλ„ 싀행될 수 있게 도와쀀닀
  • ν”„λ‘œκ·Έλž¨ λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•˜κ³  μ΅œμ ν™” μ‹œν‚¨λ‹€

 

 

λŒ“κΈ€