자바가상머신을 이해하기 쉽도록 복잡하지 않게
간단한 설명과 원리 정도만 포스팅 하겠습니다.
제가 처음 개발을 접했을 때 많은 도움이 되었던
'JAVA의 정석'에 설명이 잘 되어있어 그대로 가져왔습니다.
[JAVA의 정석- 남궁성 지음]
자바가상머신(Java Virtual Machine) 이란?
JVM은 'Java Virtual Machine'을 줄인 것으로
직역하면
'자바를 실행하기 위한 가상 기계'라고 할 수 있다.
가상 기계라는 말이 어색하겠지만 영어권에서는
컴퓨터를 머신(machine) 이라고도 부르기 때문에
'머신' 이라는 용어대신 '컴퓨터'를 사용해서
'자바를 실행하기 위한 가상 컴퓨터'라고 이해하면 좋을 것이다.
'가상 기계(Vircual machine)'는 소프트웨어로 구현된
하드웨어를 뜻하는 넓은 의미의 용어 이며,
컴퓨터 성능이 향상됨에 따라 점점 더 많은 하드웨어들이
소프트웨어화되어 컴퓨터 속으로 들어오고 있다.
그 예로는 TV와 비디오를 소프트웨어화한
윈도우 미디어 플레이어라던가,
오디오 시스템을 소프트웨어화한 윈앰프(winamp) 등이 있다.
이와 마찬가지로 '가상 컴퓨터(virtual computer)'는
실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터
라는 뜻으로 컴퓨터 속의 컴퓨터라고 생각하면 된다.
자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터
(JVM)에서만 실행되기 때문에,
자바 애플리케이션이 실행되기 위해서는
반드시 JVM이 필요하다.
JAVA 동작원리
일반 애플리케이션의 코드는
OS만 거치고 하드웨어로 전달되는데
JAVA 애플리케이션은
JVM을 한 번 더 거치고 하드웨어로 전달 됩니다.
하드웨어에 맞게 완전히 컴파일 된 상태가 아니고
실행 시에 해석(interpret)되기 때문에
속도가 느리다는 단점을 가지고 있다.
그러나 요즘엔 바이트코드(컴파일된 코드)를
하드웨어의 기계어로 바로 변환해주는
JIT컴파일러와 향상된 최적화 기술이 적용되어서
속도의 격차를 많이 줄였다.
위의 [왼쪽 그림]에서 볼 수 있듯이
일반 애플리케이션은OS와 바로
맞붙어 있기 때문에 OS 종속적이다.
그래서 다른 OS에서 실행시키기 위해서는
애플리케이션을 그 OS에 맞게 변경해야한다.
반면에,
JAVA 애플리케이션은 JVM과만 상호작용을
하기 때문에 OS와 하드웨어에 독립적이라 타 OS에서도
프로그램의 변경없이 실행이 가능한 것이다.
단,
JVM은 OS에 종속적이기 때문에
각 OS (window용, macintosh용, Linux용)에서
실행가능한 JVM이 필요하다.
'IT > Java' 카테고리의 다른 글
[자바가상머신] JVM(Java Virtual Machine) 이란? (2/2) (0) | 2022.02.13 |
---|---|
[언어소개] 자바(JAVA)의 특징 (2) | 2022.02.11 |