본문 바로가기

Language/Java

[JVM] JVM의 개념과 필요한 이유

JVM(Java Virtual Machine)
  • 자바 프로그램을 실행하기 위한 가상 머신
  • 하드웨어 및 운영체제에 구애받지 않고 자바 프로그램이 실행 가능
  • 자바의 "Write Once, Run Anywhere(한 번 쓰면, 어디서든 동작)" 개념을 가능하게 만드는 핵심 요소

JVM의 역할과 필요성
  1. 플랫폼 독립성 제공
    • 자바 프로그램은 작성되면 바이트코드(.class 파일)로 컴파일되는데, 이 바이트코드는 특정 운영체제나 하드웨어에 종속되지 않음
    • JVM은 이 바이트코드를 해당 시스템에서 이해할 수 있는 기계어로 변환하여 실행하기 때문에 자바 프로그램은 어떤 운영체제에서든 동일하게 작동 가능
    • 플랫폼 독립성이 자바의 큰 장점 중 하나이며 JVM이 이를 가능하게 해줌
  2. 메모리 관리와 성능 최적화
    • JVM은 자동으로 메모리를 관리하는 가비지 컬렉션 기능을 통해 개발자가 명시적으로 메모리를 해제하지 않아도 되도록 자동으로 메모리를 관리해줌
    • 또한, JIT(Just-In-Time) 컴파일러가 포함되어 있어 자주 사용되는 코드를 기계어로 변환해 실행 속도를 향상
  3. 보안 및 안정성
    • JVM은 자바 프로그램의 바이트코드를 실행하기 전검증하는 클래스 로더바이트코드 검증 기능을 통해 메모리 접근을 제어하고 프로그램의 안정성을 보장
    • 이로 인해 악의적인 코드나 시스템을 해칠 가능성이 있는 코드의 실행을 방지 가능
  4. 다양한 언어 지원
    • 자바 외에도 Kotlin, Scala, Groovy와 같은 다른 JVM 기반 언어를 실행할 수 있도록 해줌
    • 이로써 여러 언어의 생태계에서 JVM의 기능을 공유할 수 있으며, 자바가 아닌 언어도 동일한 플랫폼 독립성, 메모리 관리, 보안 등의 이점을 누릴 수 있음
  • 따라서, JVM은 자바 및 JVM 기반 언어(다양한 언어 지원)운영 체제나 하드웨어에서 독립적(플랫폼 독립성)으로 작동할 수 있도록 도와주며, 개발자가 보다 안전(보안성)하고 최적화(메모리 관리)프로그램을 작성할 수 있도록 지원하는 중요한 컴포넌트