★Java Detail★

Java02. JVM(Java Virtual Machine) 자바 가상 머신

지댕댕 2023. 5. 16. 09:00
728x90

JVM은 'Java virtual machine'을 줄인 것으로 직역하면 자바를 실행하기 위한 가상 기계라고 할 수 있다. 영어권에서는 컴퓨터를 머신(machine)이라고도 부르기 때문에 머신이라는 용어대신 컴퓨터를 사용해서 자바를 실행하기 위한 가상 컴퓨터라고 이해하면 좋을 것이다. 가상 기계는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어이며, 컴퓨터의 성능이 향상됨에 따라 점점 더 많은 하드웨어들이 소프트웨어화되어 컴퓨터 속으로 들어오고 있다. 그 예로는 TV와 비디오를 소프트웨어화한 윈도우 미디어 플레이어와 오디오 시스템을 소프트웨어화한 윈앰프(winamp) 등이 있다. 이와 마찬가지로 가상 컴퓨터(virtual computer)는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터라고 생각하면 된다.

자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다. 일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데, Java애플리케이션은 JVM을 한 번 더 거치기 때문에, 그리고 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 가지고 있다. 그러나 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해 주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다.

일반 애플리케이션은 OS와 바로 맞붙어 있기 때문에 OS종속적이다. 그래서 다른 OS에서 실행시키기 위해서는 애플리케이션을 그 OS에 맞게 변경해야 한다. 반변에 Java 애플리케이션은 JVM 하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이라 다른 OS에서도 프로그램의 변경 없이 실행이 가능한 것이다. 단, JVM은 OS에 종속적이기 때문에 해당 OS에서 실행 가능한 JVM이 필요하다. 그래서 썬에서는 일반적으로 많이 사용되는 주요 OS용 JVM을 제공하고 있고, 이렇게 함으로써 자바의 중요한 장점 중의 하나인 "Write once, run anywhere. (한 번 작성하면 어디서든 실행된다.)"이 가능하게 되는 것이다!

 

728x90

'★Java Detail★' 카테고리의 다른 글

Java 06. Casting (형변환, 캐스팅)  (0) 2023.05.23
Java 05. Scanner 입력받기  (0) 2023.05.22
Java 04. 변수의 명명규칙  (0) 2023.05.19
Java 03. 변수 (variable)  (0) 2023.05.18
Java01. 자바 언어의 특징  (0) 2023.05.15