[Java] JVM(Java Virtual Machine)
- IT/Java
- 2020. 8. 10.
JVM이란?
JVM은 'Java virtual machine'을 줄인 것으로 직역하면 '자바를 실행하기 위한 가상 기계'
가상 기계라는 말이 좀 어색하겠지만 영어권에서는 컴퓨터를 머신(machine)이라고도 부르기 때문에 '머신'이라는 용어대신 '컴퓨터'를 사용해서 '자바를 실행하기 위한 가상 컴퓨터'라고 이해하면 좋습니다.
'가상 기계(virtual machine)'는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어. 예를들어 TV와 비디오를 소프트웨어화한 윈도우 미디오 플레이어, 곰플레이어 등이 있습니다.
이와 같이 '가상 컴퓨터(virtual computer)'는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터라고 생각하면 됩니다.
자바로 작성된 애플리케이션은 모두 이 JVM에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요합니다.
일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 비해 Java 애플리케이션은 JVM을 한 번 더 거치기 때문에, 또 하드웨어에 맞게 완전히 컴파일된 상태가 아니라 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 가지고 있습니다. (요즘은 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다고 합니다)
그림 1-2에서 볼 수 있듯 일반 애플리케이션은 OS와 바로 맞붙어 있기 때문에 OS 종속적입니다. 그래서 다른 OS에서 실행시키기 위해서는 애플리케이션을 그 OS에 맞게 변경해야 합니다. 반면에 JAVA 애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이라 다른 OS에서도 프로그램의 변경없이 실행이 가능 합니다.
썬에서는 일반적으로 많이 사용되는 주요 OS용 JVM을 제공하고 있고, 이렇게 함으로써 자바의 중요한 장점 중 하나인 "Write once, run anywhere(한 번 작성하면 어디서든 실행)"이 가능하게 됩니다.
'IT > Java' 카테고리의 다른 글
[Java] 자바 언어의 특징 (0) | 2020.08.10 |
---|