소개


<aside>

</aside>

JVM(Java Virtual Machine)


▶︎ JVM 이란?

<aside>

JVM(Java Virtual Machine)은 이름 그대로 Java를 실행하는 프로그램입니다.

자바로 작성된 모든 프로그램은 JVM에 의해서 실행되고, 실행할 수 있습니다. 따라서 Java 프로그램을 실행하기 위해서는 반드시 자바 가상 머신이 설치되어 있어야 합니다. Java를 실행하기 위한 실행 환경을 설치했다면 기본적으로 각 OS에 맞는 JVM이 설치됐을겁니다.

</aside>

▶︎ JVM이 필요한 이유

OS로부터 독립하기 위해

결론부터 말하면 JVM은 Java를 어떠한 OS에서도 실행할 수 있게하기 위해 필요합니다.

image.png

CPU는 특정 아키텍처에 맞게 설계된 기계어(Machine Code, 0과 1로 이루어진 CPU가 이해할 수 있는 가장 낮은 수준의 언어)만 직접적으로 실행할 수 있습니다. 즉, 사용자가 어떤 언어로 작성된 프로그램이든. 최종적으로는 컴파일러에 의해 CPU가 이해할 수 있는 기계어로 변환되어야 실행됩니다.

C 언어의 실행

기존의 C 언어는 컴파일러가 각 OS나 CPU에 맞게 종속적으로 구성되어 있었습니다. 따라서, Linux OS에서 구현해 컴파일된 기계어는 Windows에서 호환되지 않는 경우가 많았고, 사용자가 이 컴파일러에 맞게 코드를 바꿔주어야 했습니다.

아래는 실제로 Linux와 Windows 에서 쓰임이 다른 프로세스 ID를 가져오는 C 언어로 작성된 코드입니다.

#include <unistd.h>
#include <stdio.h>

int main() {
    // Linux, Mac
    printf("Process ID: %d\\n", getpid());
    // Windows
    printf("Process ID: %lu\\n", GetCurrentProcessId());
    return 0;
}

Java의 실행

C 언어는 사용자가 같은 프로그램이라도 각 OS 맞게 다르게 코드를 작성해야 했습니다. 이렇게 컴파일러가 운영체제마다 의존적이었던 문제를 해결하고자 JAVA에서는 JVM이 등장해 OS와 JVM을 통해 상호작용합니다.