본문 바로가기

카테고리 없음

Java Virtual Machine (JVM) [부제 Java가 운영체제에 독립적인 이유?]

JVM이 뭘까??

JVM은 자바 어플리케이션(프로그램)을 실행시키는 도구이다.

정확히는 컴파일러에 의해 변환된 .class 확장자를 가진 바이트 코드 파일을 해석해서 실행시키는 도구이다.

자바로 작성된 프로그램은 모두 이 JVM을 통해서만 실행되기 때문에 자바 프로그램을 실행시키기 위해서는 반드시 JVM이 필요하다.


PC에서 실행되는 프로그램은(프로세스)는 실행 전, 운영체제에게 본인이 필요한 자원을 주문하고,

운영체제로 부터 프로그램 실행에 필요한 자원(메모리, 자원 등)을 할당 받는다.

 

그런데, 이때 프로그램이 운영체제에게 필요한 자원을 요청하는 방식이 OS 마다 다르다

WINDOW , MAC OS , LINUX 라는 다양한 OS가 존재하는 상황에서 프로그래밍 언어를 사용하여 작성한 소스코드가 모든 OS에서 동일하게 실행될 수 없는 이유이다.

그래서 당연하게도 어떤 특정 프로그램의 소스코드를 작성할 때, 여러 OS에서 작성한 소스코드가 실행될 수 있게끔 하려면, 각 OS 별로 모두 따로 작성해주어야 한다.

 

프로그래밍 언어가 OS 에 종속적인 이유가 바로 이것이다.

 

하지만 Java는 프로그램의 실행과 OS 사이에 일종의 매개체를 넣었다.

그것이 바로 JVM 이다.

JVM은 각 운영체제에 적합한 버전이 존재하며, Window, Mac OS, Linux 용 JVM 이 따로 존재한다.

Java 소스코드 프로그램은 직접적으로 OS 와 소통하는 것이 아니라, JVM을 통해서 OS와 소통한다.

 

따라서, JVM 자체는 운영체제 마다 각기 다른 버전이 존재하지만,

프로그래머가 작성하는 소스코드는 JVM이라는 매개체를 통해서 실행되기 때문에

프로그래머는 OS를 구분하지 않고 한번의 소스코드작성으로 모든 OS에서 해당 소스코드를 문제없이 실행시킬 수 있다.

 

이것이 Java라는 언어가 OS로 부터 독립적일 수 있는 이유이다.

(단, JVM은 OS에 종속적이기에 해당 OS에서 실행가능한 JVM이 필요함.)