
자바는 "한 번만 작성하면 어디서든 실행된다"는 말을 들어본 적 있는가?
이 말의 중심에는 바로 'JVM(Java Virtual Machine)'이라는 기술이 있다.
JVM은 자바 프로그램이 운영체제나 장비에 관계없이 실행될 수 있도록 해주는 핵심 요소다.
JVM의 개념과 역할을 쉽게 살펴보자.
JVM(Java Virtual Machine, 자바 가상 머신)은 자바 프로그램을 실행하기 위한 가상의 컴퓨터다.
자바 소스 파일은 먼저 컴파일되어 바이트코드(.class 파일)로 변환되며, 이 바이트코드를 실제로 실행하는 것이 바로 JVM이다.
다시 말해, JVM은 운영체제와 자바 프로그램 사이에서 중개자 역할을 하며, 플랫폼 독립성을 제공한다.

더 풀어서 이야기해 보면, 만약 운영체제에서 JAVA가 설치된다면(A), 그 운영체제에 맞는 JVM 버전이 설치되어 있는 것이고, 이 JVM은 자바 프로그램을 실행시킬 수 있기 때문에(B), 자바 프로그램은 어디서든 실행(C)될 수 있는 플랫폼 독립성을 제공한다.
수학시간에 본 적이 있을 것이다.
A → B → C 이기 때문에, A → C
Windows에서도, Linux에서도, Mac에서도, Android에서도, iOS에서도 Java(JVM)이 설치될 수 있기 때문에, 모두 Java 프로그램을 소스 코드 수정 없이 class 파일이 있으면 실행할 수 있게 되는 것이다.
자바 프로그램은 4가지 과정을 거쳐서 실행된다. 처음 단계를 소스 코드를 작성하는 단계라고 시작해 보자.

- 자바 소스 코드(.java)를 작성한다.
- 컴파일러(javac)가 바이트코드(.class)로 변환한다.
- JVM이 이 바이트코드를 읽어 해석하고 실행한다.
- 필요에 따라 JIT(Just-In-Time) 컴파일러가 바이트코드를 머신 코드로 변환해 성능을 최적화한다.
사실 프로그래밍 언어를 만들거나, 가상 머신을 만들거나, 리버싱 등의 전문 기술을 배우는 것이 아니라면, (JVM의 구성 요소가 필요한 사람이라면 이 글을 이렇게 열심히 읽을 필요도 없을 것이다.) JVM이 어떻게 동작하고, 어떤 역할을 하는지만 알면, 개발자라고 하더라도 살아가는 데 아무런 문제가 없다.

'이런 요소가 JVM 속에서 열심히 일하는구나.' 정도만 알고 있어도 훌륭하고, 잊어버려도 상관은 없는 내용이다.
- Class Loader: .class 파일을 JVM으로 로딩
- Bytecode Verifier: 바이트코드의 유효성과 보안 검증
- Runtime Data Area: 메모리 영역 (스택, 힙 등) 관리
- Execution Engine: 실제 명령어를 실행하는 핵심 처리기
- JIT Compiler: 반복되는 바이트코드를 빠르게 실행하기 위해 네이티브 코드로 변환
Java는 결국, JVM이 있어서 JAVA의 특징과 장점들을 살릴 수 있는 프로그래밍 언어가 되었다.

- 플랫폼 독립성: OS가 달라도 같은 바이트코드는 JVM만 있으면 실행 가능
- 보안성: 클래스 로딩과 검증 과정을 통해 안정성 확보
- 메모리 관리: 가비지 컬렉터를 통한 자동 메모리 해제
- 확장성: 다양한 언어(예: Kotlin, Scala 등)도 JVM 위에서 실행 가능
자바를 처음 배우거나 생소한 시기에, 헷갈리는 JAVA 용어들이 있다. JVM이 가상머신이라는 것을 알았다고 해도, JRE, JDK라는 용어가 등장한다.
구분 | 설명 |
JVM | 바이트코드를 실행하는 가상 머신 |
JRE | JVM + 자바 라이브러리(실행 환경) |
JDK | JRE + 컴파일러, 디버거 등 개발 도구 |
쉽게 설명하자면, Java라는 프로그래밍 언어 안에 JVM이 포함되는 것이고, JVM과 자바를 실행할 수 있는 자바 라이브러리를 묶은 것이 JRE이다.
운영체제에 JVM만 있다고 자바 프로그램을 실행할 수 있는 것은 아니고, JRE(Java Runtime Environment)가 있어야 자바 프로그램을 실행할 수 있는 것이다.
JDK(Java Development Kit)는 자바를 실행할 수 있는 환경인 JRE에서 개발자가 개발할 수 있도록 컴파일러, 디버거 등 개발 도구까지 포함한 키트이다.
JDK를 설치하면, 언제나 자바를 개발하고 실행할 수 있는 환경이 구성되는 것이다.

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

#JVM #자바가상머신 #Java기초 #JDK #JRE #바이트코드 #가비지컬렉터 #플랫폼독립성 #IT지식 #티스토리블로그
'IT 정보 > 용어' 카테고리의 다른 글
토큰이란? IT에서도 다양한 분야에서 사용되는 토큰 용어 알아보기 (3) | 2025.05.20 |
---|---|
컴파일러 vs 인터프리터, 프로그램은 어떻게 실행될까? (0) | 2025.05.19 |
비어 있다는 것도 의미가 있다? NULL의 의미 쉽게 이해하기 (1) | 2025.05.17 |
모든 프로그래밍의 관례적인 시작, Hello World란? (2) | 2025.05.16 |
공인 IP를 절약하는 기술, NAT란? (0) | 2025.05.16 |