gimmickbutreal

[Java] JVM이란 무엇일까? 본문

CS

[Java] JVM이란 무엇일까?

isshosng 2023. 11. 16. 16:44

JVM은 'Java Virtual Machine'이란 문장을 줄인 것으로 자바를 실행하기 위한 가상 기계라고 번역할 수 있다. 영미권에서는 컴퓨터를 머신이라고도 부르기 때문에 한국인인 우리는 자바를 실행하기 위한 가상 컴퓨터라고 생각하면 된다.

 

Virtual Machine이란 넓은 의미를 지닌 용어인데, 소프트웨어로 구현된 하드웨어를 뜻한다. 즉, TV와 비디오를 소프트웨어화한 윈도우 미디어 플레이어가 이에 포함된다. 이와 유사하게 JVM의 M은 컴퓨터를 뜻하는 것인데, 가상 컴퓨터는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로, 컴퓨터 속의 컴퓨터라고 생각하면 된다.

 

자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.

 

일반프로그램과 Java 프로그램간 비교

 

 

위 그림처럼, 일반 프로그램의 코드는 OS만 거치고 바로 하드웨어로 전달되지만, Java 프로그램은 JVM을 한 번 더 거치는 차이점을 볼 수 있다. 그렇다면 이런 차이점으로 인해 발생하는 현상은 무엇일까?

첫 째로, 하드웨어에 맞게 컴파일 된 상태가 아니고 실행 시 해석되기 때문에 속도가 느리다. 이러한 문제는 JIT컴파일러(컴파일된 자카보드를 하드웨어의 기계어로 바로 변환해줌)와 향상된 최적화 기술 발전으로 속도의 격차를 많이 줄였다.

둘 째로, Java 프로그램은 JVM하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이므로 다른 OS에서도 프로그램 변경없이 실행 가능하다. 단, JVM은 OS에  종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요합니다. 예를 들어 운영체제가 Windows, Macintosh, Linux가 있다면 이에 맞는 JVM이 필요하다는 뜻입니다.

 

 

 

 

 

 

참고도서 : 자바의 정석(남궁성)
참고링크: https://yoojh9.github.io/

'CS' 카테고리의 다른 글

[Network] OSI 7 Layer (OSI 7계층) - 요약  (0) 2023.09.21
스택과 큐 Stack & Queue  (0) 2023.07.12
연결리스트 LinkedList  (0) 2023.07.12
복잡도  (0) 2023.07.06
[CS/DB] SQL과 NoSQL의 차이  (0) 2022.07.31