JVM(Java Virtual Machine)
- 자바 프로그램을 실행하기 위한 가상 머신
- 하드웨어 및 운영체제에 구애받지 않고 자바 프로그램이 실행 가능
- 자바의 "Write Once, Run Anywhere(한 번 쓰면, 어디서든 동작)" 개념을 가능하게 만드는 핵심 요소
JVM의 역할과 필요성
- 플랫폼 독립성 제공
- 자바 프로그램은 작성되면 바이트코드(.class 파일)로 컴파일되는데, 이 바이트코드는 특정 운영체제나 하드웨어에 종속되지 않음
- JVM은 이 바이트코드를 해당 시스템에서 이해할 수 있는 기계어로 변환하여 실행하기 때문에 자바 프로그램은 어떤 운영체제에서든 동일하게 작동 가능
- 플랫폼 독립성이 자바의 큰 장점 중 하나이며 JVM이 이를 가능하게 해줌
- 메모리 관리와 성능 최적화
- JVM은 자동으로 메모리를 관리하는 가비지 컬렉션 기능을 통해 개발자가 명시적으로 메모리를 해제하지 않아도 되도록 자동으로 메모리를 관리해줌
- 또한, JIT(Just-In-Time) 컴파일러가 포함되어 있어 자주 사용되는 코드를 기계어로 변환해 실행 속도를 향상
- 보안 및 안정성
- JVM은 자바 프로그램의 바이트코드를 실행하기 전에 검증하는 클래스 로더와 바이트코드 검증 기능을 통해 메모리 접근을 제어하고 프로그램의 안정성을 보장
- 이로 인해 악의적인 코드나 시스템을 해칠 가능성이 있는 코드의 실행을 방지 가능
- 다양한 언어 지원
- 자바 외에도 Kotlin, Scala, Groovy와 같은 다른 JVM 기반 언어를 실행할 수 있도록 해줌
- 이로써 여러 언어의 생태계에서 JVM의 기능을 공유할 수 있으며, 자바가 아닌 언어도 동일한 플랫폼 독립성, 메모리 관리, 보안 등의 이점을 누릴 수 있음
- 따라서, JVM은 자바 및 JVM 기반 언어(다양한 언어 지원)가 운영 체제나 하드웨어에서 독립적(플랫폼 독립성)으로 작동할 수 있도록 도와주며, 개발자가 보다 안전(보안성)하고 최적화(메모리 관리)된 프로그램을 작성할 수 있도록 지원하는 중요한 컴포넌트
'Language > Java' 카테고리의 다른 글
[JSP] 기본 문법 / 내장 객체 / 태그 (0) | 2024.12.02 |
---|---|
[GC] 가비지 컬렉터의 개념, 원리, 알고리즘 (1) | 2024.11.13 |
[Java] Java의 컴파일 과정 (1) | 2024.11.13 |
[OOP] 객체지향 프로그래밍의 개념과 특징 (2) | 2024.11.11 |
Call by Value와 Call by Reference의 차이 (0) | 2024.09.10 |