JVM (Java Virtual Machine)
Jan 27, 2026
핵심 개념
섹션 제목: “핵심 개념”JVM(Java Virtual Machine)은 Java 바이트코드를 실행하는 추상 컴퓨터 명세로, 프로그래밍 환경 가상화(Programming-Environment Virtualization) 의 대표적 사례이다. “Write Once, Run Anywhere” 목표를 실현하여 플랫폼 독립적인 프로그램 실행을 가능하게 한다.
비유하면, Java 바이트코드는 세계 공용어와 같다. 어떤 “나라”(OS)에서든 “통역사”(JVM)가 이해할 수 있다.
동작 원리
섹션 제목: “동작 원리”JVM 실행 흐름
1 Java Program
.java 소스 파일 2 Compile
javac 컴파일러 3 Bytecode
.class 파일 4 Class Loader
.class + Java API 로드 5 Verifier
바이트코드 유효성 검증 6 Interpreter/JIT
네이티브 코드 실행 JVM 내부 구조
Java Interpreter / JIT 바이트코드 → 네이티브 명령어 실행
Garbage Collector 미사용 객체 메모리 자동 회수
Verifier 스택 오버플로우, 불법 메모리 접근 방지
Class Loader .class 파일 로드 + Java API 로드
JVM 구현 방식
섹션 제목: “JVM 구현 방식”| 방식 | 설명 | 성능 |
|---|---|---|
| 소프트웨어 인터프리터 | 바이트코드를 하나씩 해석 실행 | 느림 |
| JIT 컴파일러 | 메서드 최초 호출 시 네이티브 코드로 컴파일, 캐싱 | 빠름 (현대 JVM 표준) |
| 하드웨어 구현 | Java 칩이 바이트코드 직접 실행 | 가장 빠름 (특수 HW 필요) |
하드웨어 가상화 vs 프로그래밍 환경 가상화
섹션 제목: “하드웨어 가상화 vs 프로그래밍 환경 가상화”| 특성 | 하드웨어 가상화 (VM) | 프로그래밍 환경 가상화 (JVM) |
|---|---|---|
| 가상화 대상 | CPU, 메모리, I/O | 프로그래밍 API, 런타임 |
| 목적 | 전체 OS 실행 | 특정 언어 프로그램 실행 |
| 게스트 | 운영체제 | Java 프로그램 |
| 예시 | VMware, VirtualBox | JVM, .NET CLR |
보안 기능
섹션 제목: “보안 기능”- Verifier: 바이트코드가 안전한지 실행 전 검증
- 포인터 연산 금지: 불법 메모리 접근 원천 차단
- 스택 검사: 오버플로우/언더플로우 방지
- Sandbox: 신뢰되지 않은 코드의 시스템 접근 제한
기존 방식 vs Java 방식
기존 방식 (C 프로그램)
Windows 컴파일 Linux 컴파일 macOS 컴파일
Java 방식
바이트코드 (.class) JVM (Windows) JVM (Linux) JVM (macOS)
Java의 플랫폼 독립성: 바이트코드를 한 번만 생성하면 각 OS의 JVM이 실행한다.
관련 개념
섹션 제목: “관련 개념”- 가상화 (Virtualization) - JVM이 속하는 프로그래밍 환경 가상화를 포함한 가상화 방식 분류
- 바이너리 변환 (Binary Translation) - JVM의 JIT 컴파일과 유사하게 코드를 변환하여 실행하는 기법
- 컨테이너 (Container) - JVM과는 다른 OS 수준의 격리 기술로, 애플리케이션 배포에 활용
- 트랩 앤 에뮬레이트 (Trap-and-Emulate) - 하드웨어 가상화 기법으로, JVM의 소프트웨어 에뮬레이션과 대비