●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 |