자바 가상 머신(JVM)

자바 가상 머신(JVM, Java Virtual Machine)이란 자바 바이트 코드를 실행시키기 위한 가상의 기계라고 할 수 있습니다.

workspace를 만들어서 내부를 본다면 아래 그림처럼 되어있습니다.

Untitled

src에는 소스 파일이 들어있고, bin에는 컴파일을 하면 실행가능한 class파일이 만들어집니다.

그러니까 자바는 소스 파일을 컴파일 하면 exe 파일이 아니라 실행하기 전 단계로 만들어 놓은 어정쩡한 코드로 만들어 놓는 것이죠.

이렇게 실행 가능한 class 파일을 byte code라고 합니다.

자바는 확장자가 exe로 되어있는 실행 파일이 아닙니다. exe 파일 형태가 아니기 때문에 더블클릭해서 실행을 할 수 없죠.

그렇기에 별도로 .class파일을 실행하게 만들어 주는 엔진이 필요합니다.

이걸 실행하게 해주는 엔진이 바로 JVM 입니다.

JVM에 의해서 class 파일을 메모리에 로딩을 하고 로딩과 동시에 해당 운영체제 플랫폼에 맞게 리소스들을 재컴파일해서 실행해줍니다. (내부적으로 2번 정도의 컴파일이 일어난다고 보면 됩니다.)

JVM 실행

Untitled

기본적으로 컴파일 명령어는 javac로 하고 정상적으로 컴파일이 되면 .class파일이 만들어집니다.

그 다음에 java 라는 명령어로 확장자를 뺀 클래스 이름만 적으면 자바가 클래스를 실행하라는 명령인데 실행은 java.exe가 하는게 아니라 내부에 있는 JVM이라는 프로세서에 의해서 실행이 됩니다.

운영체제는 여러개가 있죠. 간단하게 봐도 window, mac, linux 등이 있죠.

어떤 운영체제 위에 JDK를 설치했다면 운영체제 메모리 위에 JVM이라는 가상 머신(프로세서)이 눈에는 보이지 않지만 메모리에 탑재가 되어있습니다.