1주차 - JVM은 무엇이며 자바 코드는 어떻게 실행

Sorbet·2021년 3월 6일
0

WhiteshipStudyHALLE

목록 보기
5/5

JVM은 무엇이며 자바 코드는 어떻게 실행

  • 목표
    : 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기.

  • 학습할 것

    • JVM이란 무엇인가
    • 컴파일 하는 방법
    • 실행하는 방법
    • 바이트코드란 무엇인가
    • JIT 컴파일러란 무엇이며 어떻게 동작하는지
    • JVM 구성 요소
    • JDK와 JRE의 차이

JVM이란 무엇인가

  • Java Virtual Machine 의 약자. (자바 가상 기계)
  • 자바의 특징 중 하나인 WORA(write once run anywhere)을 할 수 있도록 만들어준다.
  • 컴퓨터로 실행하기

타 언어는 운영체제에 종속적(플랫폼 종속적)이라 아무데서나 실행이 불가하지만 java는 JVM만 있으면 어디서든 실행 가능

컴파일 하는 방법

  • 컴파일
    : 소스코드(인간의 프로그래밍 언어) => 기계어 변환하는 과정
  • 자바의 소스코드
    • ##.java 파일을 => .class로 변경
  • javac 이라는 이름의 응용프로그램이 자바 소스를 바이트 코드로 변환하는 컴파일러
  • 실행하는 방법
    • ##.class 파일은 JVM으로 실행이 가능하다.
  • 실행과정 예시

바이트코드란 무엇인가
: 자바 컴파일러가 자바 소스 프로그램을 컴파일 한 기계어

: 플랫폼에 대한 종속성 없이 JVM에서 실행되는 바이너리 코드다. (2진수로 되어있음)

JIT 컴파일러란 무엇이며 어떻게 동작하는지
: JIT(just-in-time compilation)

: JVM , .NET, node.js 등 에서 컴파일 하는 방식

: interpreter 방식의 단점을 보완하기 위해 도입된 방식

: JIT 컴파일러는 바이트코드를 읽어 빠른 속도로 기계어를 생성할 수 있다.

이런 기계어 변환은 코드가 실행되는 과정에 실시간으로 일어나며(그래서 Just-In-Time이다), 전체 코드의 필요한 부분만 변환한다. 기계어로 변환된 코드는 캐시에 저장되기 때문에 재사용시 컴파일을 다시 할 필요가 없다.

: 딱 한번만 실행될 경우에는 인터프리터 방식이 더 나음

JVM 구성 요소
1. Class Loader : 컴파일 한 .class 파일을 런타임에 올려서 실행하는 부분

  1. Execution Engine : .class 파일을 해석한다 (인터프리터, JIT 방식으로)

  2. Runtime Data Area : 해석된 프로그램은 여기서 돌아간다. JVM 메모리 영역. 필요에 따라 GC나 쓰레드 동기화등 관리해줌

  1. Garbage Collector : 메모리 관리를 해준다. Runtime Data Area에서 해주는 역할 중 하나

JDK와 JRE의 차이
: JDK (Java Development Kit)

: JRE (Java Run-time Environment)

: JDK가 더 큰 개념

JDK는 자바컴파일러 등 자바 응용 프로그램을 개발하는데 필요한 도구

+자바 응용프로그램이 실행될때 필요한 JVM,

  • 그리고 JRE(표준 클래스 파일들을 포함)까지 포함
profile
Sorbet is good...!

0개의 댓글