본문 바로가기
IT 정보/용어

JVM이란? 자바 프로그래밍 언어의 핵심 동작 원리

by 희품 2025. 5. 18.
반응형

 

자바는 "한 번만 작성하면 어디서든 실행된다"는 말을 들어본 적 있는가?
이 말의 중심에는 바로 'JVM(Java Virtual Machine)'이라는 기술이 있다.
JVM은 자바 프로그램이 운영체제나 장비에 관계없이 실행될 수 있도록 해주는 핵심 요소다.

JVM의 개념과 역할을 쉽게 살펴보자.

 

JVM(Java Virtual Machine)이란?

JVM(Java Virtual Machine, 자바 가상 머신)은 자바 프로그램을 실행하기 위한 가상의 컴퓨터다.

자바 소스 파일은 먼저 컴파일되어 바이트코드(.class 파일)로 변환되며, 이 바이트코드를 실제로 실행하는 것이 바로 JVM이다.

다시 말해, JVM은 운영체제와 자바 프로그램 사이에서 중개자 역할을 하며, 플랫폼 독립성을 제공한다.

JAva언어의 플랫폼 독립성을 시각적으로 표현한 이미지

더 풀어서 이야기해 보면, 만약 운영체제에서 JAVA가 설치된다면(A), 그 운영체제에 맞는 JVM 버전이 설치되어 있는 것이고, 이 JVM은 자바 프로그램을 실행시킬 수 있기 때문에(B), 자바 프로그램은 어디서든 실행(C)될 수 있는 플랫폼 독립성을 제공한다.

 

수학시간에 본 적이 있을 것이다.

A → B → C 이기 때문에, A → C

 

Windows에서도, Linux에서도, Mac에서도, Android에서도, iOS에서도 Java(JVM)이 설치될 수 있기 때문에, 모두 Java 프로그램을 소스 코드 수정 없이 class 파일이 있으면 실행할 수 있게 되는 것이다.

 

자바 코드가 실행되는 과정

자바 프로그램은 4가지 과정을 거쳐서 실행된다. 처음 단계를 소스 코드를 작성하는 단계라고 시작해 보자.

자바 코드가 실행되는 과정을 간단하게 컴파일 하는 과정을 표시한 다이어그램

  1. 자바 소스 코드(.java)를 작성한다.
  2. 컴파일러(javac)가 바이트코드(.class)로 변환한다.
  3. JVM이 이 바이트코드를 읽어 해석하고 실행한다.
  4. 필요에 따라 JIT(Just-In-Time) 컴파일러가 바이트코드를 머신 코드로 변환해 성능을 최적화한다.

 

JVM의 주요 구성 요소

사실 프로그래밍 언어를 만들거나, 가상 머신을 만들거나, 리버싱 등의 전문 기술을 배우는 것이 아니라면, (JVM의 구성 요소가 필요한 사람이라면 이 글을 이렇게 열심히 읽을 필요도 없을 것이다.) JVM이 어떻게 동작하고, 어떤 역할을 하는지만 알면, 개발자라고 하더라도 살아가는 데 아무런 문제가 없다.

'이런 요소가 JVM 속에서 열심히 일하는구나.' 정도만 알고 있어도 훌륭하고, 잊어버려도 상관은 없는 내용이다.

  • Class Loader: .class 파일을 JVM으로 로딩
  • Bytecode Verifier: 바이트코드의 유효성과 보안 검증
  • Runtime Data Area: 메모리 영역 (스택, 힙 등) 관리
  • Execution Engine: 실제 명령어를 실행하는 핵심 처리기
  • JIT Compiler: 반복되는 바이트코드를 빠르게 실행하기 위해 네이티브 코드로 변환

 

JVM의 장점과 역할

Java는 결국, JVM이 있어서 JAVA의 특징과 장점들을 살릴 수 있는 프로그래밍 언어가 되었다.

프로그래밍을 하는 개발자 손과 노트북 사진

  • 플랫폼 독립성: OS가 달라도 같은 바이트코드는 JVM만 있으면 실행 가능
  • 보안성: 클래스 로딩과 검증 과정을 통해 안정성 확보
  • 메모리 관리: 가비지 컬렉터를 통한 자동 메모리 해제
  • 확장성: 다양한 언어(예: Kotlin, Scala 등)도 JVM 위에서 실행 가능

 

 

JVM? JRE? JDK? Java 용어 비교

자바를 처음 배우거나 생소한 시기에, 헷갈리는 JAVA 용어들이 있다. JVM이 가상머신이라는 것을 알았다고 해도, JRE, JDK라는 용어가 등장한다.

구분 설명
JVM 바이트코드를 실행하는 가상 머신
JRE JVM + 자바 라이브러리(실행 환경)
JDK JRE + 컴파일러, 디버거 등 개발 도구

쉽게 설명하자면, Java라는 프로그래밍 언어 안에 JVM이 포함되는 것이고, JVM과 자바를 실행할 수 있는 자바 라이브러리를 묶은 것이 JRE이다.

운영체제에 JVM만 있다고 자바 프로그램을 실행할 수 있는 것은 아니고, JRE(Java Runtime Environment)가 있어야 자바 프로그램을 실행할 수 있는 것이다.

 

JDK(Java Development Kit)는 자바를 실행할 수 있는 환경인 JRE에서 개발자가 개발할 수 있도록 컴파일러, 디버거 등 개발 도구까지 포함한 키트이다.

 

JDK를 설치하면, 언제나 자바를 개발하고 실행할 수 있는 환경이 구성되는 것이다.


WORA : Write Once Run Anywhere 철학을 표시해주는 도표 그림

JVM은 자바의 "Write Once, Run Anywhere"철학을 실현해 주는 핵심 엔진이다.

자바를 비롯한 여러 언어들이 JVM 위에서 실행되며, JVM은 이를 안전하고 효율적으로 처리하는 중요한 역할을 수행한다. 자바 개발을 하지 않더라도, JVM의 구조와 작동 방식을 이해하면 다양한 IT 시스템의 동작 원리를 더 깊이 있게 파악할 수 있다.

궁금하신 내용이 있으면 댓글 남겨주세요. 꼬리말 이미지.

 

#JVM #자바가상머신 #Java기초 #JDK #JRE #바이트코드 #가비지컬렉터 #플랫폼독립성 #IT지식 #티스토리블로그

반응형