본문 바로가기

JAVA

JVM과 자바 컴파일 과정

JVM

  • 어떤 침대에 깔아도 똑같이 편안하게 해주는 침대 메트리스의 토퍼같은 역할
  • 어떤 운영체제에 상관없이 (리눅스, 윈도우, 맥 .. ) 자바를 실행시킬 수 있게 해주는 자바 가상 머신
  • 가상머신 = 가상의 기기를 만들어 주는 것
  • JVM을 통해 자바의 플랫폼 독립성이 보장되는 것!

 

 Compile

1. 정적 컴파일 과정 : JAVA Compiler(javac) 

  • .java파일 코드를 .class(바이트코드)파일로 변환하는 변환기

.java 코드 : 사람이 이해할 수 있는 코드

.class 코드(바이트 코드) : 운영체제가 이해할 수 있는 코드, jvm에서 실행되기 위한 형태로 변환된 코드

 

2.  동적 컴파일 과정 : interpreter & JIT

  • interpreter : 바이트코드를 한 줄씩 읽어서 실행
  • JIT : 자주 실행되는 코드를 기계어로 변환하여 캐싱, 실행 속도를 향상함

 

메모리 : 운영체제로부터 jvm이 할당받은 데이터를 저장하는 영역

클래스 로더 :바이트 코드를 메모리 영역에 운반

가비지 컬랙터 :메모리에서 안 쓰는 데이터를 제거함

런타임 : 프로그램이 실행중인 상태 

 

자바 개발 도구와 자바 실행 환경

  • JDK(Java Development Kit) : 자바 개발 도구, 자바를 이용해 프로그램을 개발하는데 필요한 도구, 컴파일, 디버거 ,
    • JAVA Compiler(javac) 가능!
    • 디버깅 가능!
    • JRE 가능!
  • JRE(Java Runtime Environment)(jvm포함) : 자바 실행 환경, 자바 API, 클래스 로더 ,,
    • 자바 실행 환경, jvm이므로 바이트코드(.class)파일만 실행 가능함

→ JDK는 JRE를 포함, JRE는 JVM을 포함