티스토리 뷰

Java

JVM(Java Virtual Machine)

MNMT 2022. 4. 23. 00:33

Java의 특장점 중 하나는 운영체제에 상관 없이 독립적으로 구동할 수 있다는 것이다.

이는 JVM(Java Virtual Machine)이라는 가상머신이 구동하기 때문이다. 그렇다면 JVM이 하는 일은 무엇일까?

 

이클립스에서 test.java라는 소스 파일을 작성하고 저장한 뒤 run을 누르면 src 폴더와 bin 폴더에는 하단과 같은 파일들이 생성되어 있다.

bin 폴더 test.class (실행 가능한 파일 : byte code)
src 폴더 test.java (소스 파일)

 

 byte code란 시작하기 전 단계로만 만들어 놓은 어정쩡한 코드라고 생각하면 된다.(1차 컴파일) 그런데 bin 폴더에 있는 byte code로 된 .class 파일들은 .exe로 되어있는 실행 파일이 아니므로, test.class를 더블 클릭하여 실행할 수는 없다. 따라서 이를 실행해 줄 수 있는 '무언가'가 필요한데, 그것을 JVM(Java Virtual Machine)이라고 한다.

 

 JVM에 의해서 class 파일을 메모리에 로딩을 하고, 메모리에 로딩함과 동시에 내 운영체제(OS)에 맞게 리소스들을 재컴파일(2차 컴파일)하여 실행을 해준다. (총 2번의 컴파일이 내부적으로 일어난다고 보면 됨)

 

 src 폴더의 javac.exe를 통해 오류 없이 컴파일이 되면 bin 폴더에 .class 파일이 만들어진다. 그 다음으로 java.exe를 통해 test.class 파일을 실행하는데, 이 때 java.exe로 직접 실행이 되는 것이 아니라 JVM이라는 프로세서에 의해서 실행이 된다. JVM은 평소에는 죽어있다가 2차 컴파일을 할 때 살아나게 된다.

 

 즉, 1차 컴파일 된 byte code인 class 파일을 읽어들여서 이를 JVM으로 2차 컴파일한 뒤에야, 우리는 비로소 이 test 파일을 실행할 수 있는 것이다.

 

 정리하면

 

 1차 컴파일 : byte code(아직 어떤 OS에서 실행될 지 모르는, 중간어 코드로 컴파일된 상태를 지칭)

 2차 컴파일 : JVM이라는 가상머신을 통해 구동될 OS 리소스에 맞게 다시 컴파일된다. (Windows, Mac, Linux 등)

'Java' 카테고리의 다른 글

Java 개발 환경 구축  (0) 2022.04.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함