본문 바로가기
용어정리

JDK, JRE, JVM 이란

by 나비와꽃기린 2015. 1. 28.

JDK : Java Development Kit

말 그대로 자바 개발을 위한 도구(Kit) 입니다. 자바 컴파일러(Javac), 자바가상머신(JVM), 각종 Java Libary 등을 포함하고 있어서 자바 개발을 위한 필수 도구(Kit) 입니다. JDK JRE를 포함하고 있습니다. (JDK 설치시 JRE도 설치됨)


JRE : Java Run Environment

역시 말 그대로 자바 실행 환경 이라고 보면 됩니다. Java 파일 실행을 위한 환경이며 JVM이 실행되도록 도와 주는 역할을 합니다. 만약 자바 개발이 필요없고 실행만을 원한다면 JRE만 설치하고 Java 파일을 실행하면 됩니다.


JVM : Java Virtual Machine

사용자가 Java 파일을 생성한 후 JDK의 컴파일을 거쳐 바이트코드(.class)가 되어 JVM을 거치면 컴퓨터가 사용할 수 있는 기계언어로 변경해주는 역할을 합니다.

·     Java Virtual Machine의 약자로, 인터프리터이다.

·    .java 파일이 컴파일러에 의해 .class 파일이 된 후 기계어로 바꿔주는 역할을한다.

·    JVM의 주요 메모리 영역은 Method Area, Stack, Heap이 있다.


-. Method Area

·    Method Area JVM 쓰레드들끼리 공유한다.

·    conventional 언어의 컴파일을 위한 storage area OS에서의 text segment와 유사하다.

·    각각의 클래스의 run-time 상수, method data, method, 특별한 method(instance interface의 초기화)와 같은 것들을 저장한다.

·    JVM이 시작될 때 생성된다.

·    method Area는 프로그래머가 크기를 조정할 수 있다.

·    static으로 선언된  method의 경우 호출이 되지 않아도 JVM이 시작된 후 method area에 올라간다.(main method)

·    static으로 선언된 변수의 경우 stack 영역이 아닌 method Area에 올라간다.

 

 

-. Stack

·    각각의 JVM의 쓰레드는 쓰레드에 의해 동시에 생성된 개인적인 JVM stack를 가지고 있다

·    stack frames을 저장한다.

·    C언어에서의 stack과 유사하다(지역변수, 결과의 일부, 호출된 method return 값을 저장)                                                   

        * franmes : mothod가 호출될 때 생성되고 method 호출이 끝날 시 사라지며, stack의 내부에 있다.

                        결과의 일부, 데이터, 동적인 linking(참조변수의 값), method return 값를 저장하는 공간

-. Heap

·    heap JVM 쓰레드들끼리 공유한다.

·    heap 영역은 모든 클래스 인스턴스 나 배열이 위치해 있는 run-time data 공간이다.

·    JVM이 시작될 때 생성된다.

·    Heap 영역은 자동으로 garbage collection 객체에 의해 환원된다.

 

자바 실행 흐름 : 사용자 Java 코드 생성 -> JDK 컴파일 (.class 파일 생성) ->  JVM -> 실행

'용어정리' 카테고리의 다른 글

Middleware란?  (0) 2015.01.30
CGI(Common Gateway Interface)란?  (0) 2015.01.30
WebServer란?, WAS란?  (0) 2015.01.30
OraInventory란?  (0) 2015.01.30
Thread와 Process 차이  (0) 2015.01.30
JDK, JRE, JVM 이란  (0) 2015.01.28

댓글0