Untitled

Java 언어로 프로그래밍된 파일을 Java 컴파일러가 가상 기계어 파일인 Java 클래스 파일로 만든다. 다시 말해, 소스 코드를 Java 바이트 코드로 번역한다. 이후 Java 바이트 코드를 JVM 이 읽고 실행하게 된다.

Java byte code

JVM 이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미한다. 자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불린다. 이러한 자바 바이트 코드의 확장자는 .class 이며 자바 바이트 코드는 자바 가상 머신(JVM) 만 설치되어 있으면, 어떤 운영체제에서 라도 실행될 수 있다.

JVM(Java Virtual Machine)

Untitled

JVM 은 Java 클래스 파일을 로드하고 바이트 코드를 해석하며, 메모리 등의 자원을 할당하고 관리하며 정보를 처리하는 작업을 하는 프로그램이다.

Untitled

Java Compiler

Java Source 파일을 JVM 이 해석할 수 있는 Java Byte Code(. class) 로 변경한다. 일반적인 윈도우 프로그램의 경우, Compile 이후 Assembly 언어로 구성된 파일이 생성된다.

Class Loader

JVM 내로 .class 파일들을 Load 한다. Loading 된 클래스들을 Runtime Data Area 에 배치된다. 일반적인 윈도우 프로그램의 경우 Load 과정은 OS가 주도한다.

Execution Engine

Loading 된 클래스의 Bytecode 를 해석한다. 이 과정에서 ByteCode 가 BinaryCode 로 변경된다. 일반적인 윈도우 프로그램의 경우 Assembier 가 Assembly 언어로 쓰인 코드 파일을 BinaryCode 로 변경한다.

Runtime Data Area

JVM 이 프로세스로써 수행되기 위해 OS 로부터 할당받는 메모리 영역이다. 저장 목적에 따라 다음과 같이 5개로 나눌 수 있다.