Java

[스터디 1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.

msmn 2020. 11. 21. 21:51
728x90

학습할 것

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

 

1. JVM이란 무엇인가

Java Virtual Machine의 약어로 플랫폼에 독립적으로(OS와는 다르다) Java를 실행시킬수 있게 해준다.

bytecode가 JVM위에서 실행되기 때문이다.

출처 : https://asfirstalways.tistory.com/158

2. 컴파일 하는 방법

컴파일이란, 사람이 작성한 코드를 컴퓨터가 이해할 수 있도록 변환해주는 과정을 말한다.

컴파일을 하는 장치는 컴파일러라고 한다.

자바는 javac.exe를 사용해서 컴파일을 한다.

 

3. 실행하는 방법

java.exe를 사용하여 클래스파일을 실행시킨다.

 

4. 바이트코드란 무엇인가

JVM이 이해할 수 있는 코드를 말한다.

이러한 바이트 코드는 인터프리터와 JIT 컴파일러가 읽을 수 있다.

 

5.JIT 컴파일러란 무엇이며 어떻게 동작하는지

Just In Time의 약어이다.

프로그램을 실행할 때마다 컴퓨터가 이해할 수 있는 언어로 변환하는 인터프리터 방식과

실행하기 전에 변환하는 컴파일 방식이 있다. 여기서 인터프리터 방식은 성능이 느릴 수 밖에 엇다.

 

JIT는 이 두 가지 방식을 혼합한 것이다.

변환 작업은 인터프리터에 인해서 지속적으로 수행되지만 필요한 코드의 정보는 캐시(메모리)에 담아두었다가 재사용하게 된다.

javac 명령어로 바이트코드로 컴파일하면 JVM에서 JIT컴파일러로 컴퓨터가 알아 들을 수 있게 기계코드로 변환하는 것이다.

 

6. JVM 구성 요소

1) 클래스로더

컴파일타임이 아니라 런타임에 클래스를 처음으로 참조할 때 해당 클래스를 로드하고 링크하는 특징이 있다. 이 동적 로드를 담당하는 부분이 JVM의 클래스 로더이다.

 

2) 런타임 데이터 영역

런타임 데이터 영역은 JVM이라는 프로그램이 운영체제 위에서 실행되면서 할당받는 메모리 영역이다. 런타임 데이터 영역은 6개의 PC 레지스터, JVM 스택, 네이티브 메서드 스택힙, 메서드 영역, 런타임 상수 풀 영역으로 나눌 수 있다.

 

3) 실행엔진

클래스 로더를 통해 JVM 내의 런타임 데이터 영역에 배치된 바이트코드는 실행 엔진에 의해 실행된다. 실행 엔진은 자바 바이트코드를 명령어 단위로 읽어서 실행한다.

 

7. JDK와 JRE의 차이

JDK : Java Development Kit

JRE : Java Runtime Environment

 

JRE는 실행만을 위한 환경이고 이 것만 설치하면 자바를 컴파일하는 등의 여러 프로그램이 제외된 상태로 설치된다.

JDK는 JRE + 개발을 위한 Tools & API이다.

 

 

Reference

odol87.tistory.com/5

 

[JAVA] JVM의 구조

1) 개요  자바가 플랫폼에 종속되지 않을 수 있는 이유는 자바 바이트코드가 JRE(Java Runtime Environment) 위에서 동작하는 방식 때문이다. JRE의 핵심 구성요소는 자바 바이트코드를 해석하고 실행하

odol87.tistory.com

asfirstalways.tistory.com/158

 

#자바가상머신, JVM(Java Virtual Machine)이란 무엇인가?

#JVM이란? JVM이란 JAVA Virtual Machine, 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다 (가상머신이란 프로그램의 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것이다.) JV

asfirstalways.tistory.com

 

728x90