JVM

sion Jeong·2024년 6월 25일
0

JVM

  • Java Virtual Machine의 줄임말. (자바 가상 머신)
  • 자바를 실행하기 위한 가상 기계(컴퓨터)라고 할 수 있다.
    - OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.
    - 예시: 어느 장비(PC,모바일,서버 등..)에서든 JVM 을 깔아주면 Java 실행 가능하다.

실행 방식

  • Java 소스코드 (*.java)는 CPU가 인식을 하지 못하므로 → 기계어로 컴파일을 해줘야한다.
  1. Java compiler 가 .java 파일을 → .class 라는 (Java bytecode)로 변환한다.
  2. 변환된 bytecode는 기계어가 아니기 때문에 OS가 해석할 수 없다.
  3. 떄문에 JVM을 통해 Byte Code를 OS가 해석할 수 있는 기계어(Binary Code)로 변환한다..

JVM의 구성

💡 JVM의 구성

  • 클래스 로더(Class Loader)
  • 실행 엔진(Execution Engine)
    • 인터프리터(Interpreter)
    • JIT 컴파일러(Just-in-Time)
    • 가비지 콜렉터(Garbage collector)
  • 런타임 데이터 영역 (Runtime Data Area)

1. 클래스로더

  • JVM 내로 클래스 파일(*.class)을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈이다.
  • 런 타임시 동적으로 클래스를 로드하고 jar 파일 내 저장된 클래스들을 JVM 위에 탑재한다.
    • 즉, 클래스를 처음으로 참조할 때, 해당 클래스를 로드하고 링크하는 역할을 한다.

2. 실행 엔진

  • 클래스를 실행시키는 역할
  • 클래스 로더가 → JVM내의 런타임 데이터 영역에 바이트 코드를 배치시키고, 이것은 실행 엔진에 의해 실행된다.
  • 자바 바이트 코드
    • (*.class)는 비교적 인간이 보기 편한 형태로 기술된 것이다.
    • 실행 엔진은 이와 같은 바이트 코드를 실제로 JVM 내부에서 기계가 실행할 수 있는 형태로 변경한다.

💡 인터프리터 (실시간 번역)

  • 실행 엔진은 자바 바이트 코드를 명령어 단위로 읽어서 실행한다.
  • 하지만 한 줄씩 수행하기 때문에 느리다는 단점이 있다.

💡 JIT(Just-In-Time) (책한권 던지기)

  • 인터프리터 방식으로 실행하다가
  • 적절한 시점에 바이트 코드 전체를 컴파일하여 기계어로 변경하고, 이후에는 해당 더 이상 인터프리팅 하지 않고 기계어로 직접 실행하는 방식이다.

💡 가비지 콜렉터

  • 더이상 사용되지 않는 인스턴스를 찾아 메모리에서 삭제함

Java 개발환경 구성 (JDK, JRE, JVM)

JDK, JRE, JVM은 모두 자바(Java) 개발 및 실행 환경과 관련된 용어들이다.
+각자의 역할을 가진다.

💡 JDK(Java Development Kit)

  • 자바 개발 키트

특징

  • 자바 애플리케이션을 개발하기 위해 필요한 도구들의 모음이다.
  • 개발자가 자바 코드를 작성하고 컴파일하여 실행 가능한 바이트 코드로 변환하는 데 사용된다.

구성요소

  • 자바 컴파일러: 자바 소스 코드를 바이트 코드로 변환
    • .java 파일을 → .class 파일들로 변환
  • 자바 실행 환경(JRE): 자바 애플리케이션을 실행하기 위해 필요한 실행 환경이 포함
  • 자바 개발 도구: 디버깅, 문서화, 프로파일링 등 개발 과정을 지원하는 도구들이 제공

💡 JVM

  • 자바 바이트 코드를 실행하는 가상 머신

특징

  • 바이트 코드는 자바 컴파일러에 의해 생성된다.
  • 바이트 코드는 특정OS가 아닌 JVM 위에서 동작한다.
    • → 이 특성으로 인해 자바의 크로스 플랫폼(특정 OS에 구애받지 않는다) 특성가짐

주요 용어

  • 바이트 코드 해석: 컴파일된 바이트 코드를 읽고 실행 가능한 기계어로 변환한다.
  • 메모리 관리: 자동적으로 메모리를 할당하고 해제하여 프로그램 실행 중 메모리 관리를 용이하게 한다.
  • 가비지 컬렉션: 사용되지 않는 객체들을 자동으로 제거하여 메모리를 최적화한다.

💡 JRE

  • 자바 실행 환경
  • 자바 애플리케이션을 실행하기 위해 필요한 최소한의 실행 환경을 제공
  • JVM 을 설치하는 방법은 JRE를 설치하는 것

특징

  • JVM과 JAVA 라이브러리들이 포함되어 있다.
  • JRE만 있으면 자바 프로그램만 실행시킬수 있음
    • JVM이 있기 때문에
    • 대신 실행만 가능, 읽기가 안된다. (먼저 자바파일을 → 클래스 파일로 변환해야함)

구성 요소

  • JVM: 컴파일된 바이트 코드를 기계어로 변환
  • 자바 클래스 라이브러리: 자바 개발자들이 자주 사용하는 클래스들을 제공

참조

profile
개발응애입니다.

0개의 댓글