JongTachi의 개발 블로그

[JVM] JVM이란? 본문

Java/JVM

[JVM] JVM이란?

JongTachi 2023. 6. 4. 19:17
728x90
반응형

JVM은 자바 가상 머신으로, 자바 프로그램을 실행하기 위한 가상 컴퓨터입니다. 

 

JVM의 역할은 자바 언어로 작성된 소스 코드를 컴파일하고 해당 플랫폼에 맞게 기게어로 변환하야 실행합니다. 이를 통해 자바 프로그램은 플랫폼에 독립적으로 실행 될 수 있습니다. 

TIP. 잠깐.. 컴파일을 왜 해??

컴파일은 프로그래밍 언어로 작성된 소스 코드를 기계어로 변환하는 과정을 의미해요. 이러한 과정을 거치는 이유 4가지를 말씀드리겠습니다.

1) 실행 속도 향상 : 컴파일은 소스코드를 기계어로 변환할때 파일을 생성하는데 이 파일은 CPU가 직접 실행할 수 있는 형태이므로, 인터프리터 방식에 비해 빠른 실행속도를 가집니다.

2) 오류 검출 : 컴파일러는 소스 코드를 기계어로 변환할 때 소스 코드를 분석하고 문법적인 오류나 논리적인 오류도 함께 봅니다.

3) 플랫폼 독립성 : 소스 코드를 컴파일하여 기계어로 변환하면, 해당 플랫폼에 종속되지 않는 중간 형태인 바이너리 파일(실행 파일)이 실행됩니다. 이는 다양한 운영 체제와 하드웨어에서 실행할 수 있는 플랫폼 독립성을 제공합니다.

4) 코드 최적화 : 소스 코드를 분석하여 실행 시간 및 메모리 사용량을 최적화 할 수 있습니다.

JVM의 특징과 장단점들을 소개해드리겠습니다.

 

1. JVM 특징

1) 이식성

JVM은 운영체제에 독립적이어서 한 번 작성한 자바플그램은 어떤 플랫폼에서든 실행이 가능합니다. 

 

2) Garbage collection

JVM은 자동으로 garbage collection을 수행하여 메모리 관리를 담당합니다. 개발자가 메모리 할당과 해제를 직접하지 않아도 됩니다.

 

3) 보안

JVM은 다양한 보안 기능을 제공하여 악성 코드로부터 시스템을 보호합니다.

 

4) 다중 스레드 지원

JVM은 멀티스레드를 지원하여 병렬 처리 및 동시성 프로그래밍을 가능하게 합니다. 

 

2. JVM 장단점

1) 장점 

- 이식성이 뛰어남

- 자동 메모리 관리

- 보안기능

 

2) 단점

- 실행속도가 느리다 : JVM은 바이트 코드를 해석하거나 JIT(Jsust in time) 컴파일을 통해 기계어로 변환하기 때문에 네이티브 컴파일에 비해 상대적으로 느릴 수 있습니다.

- 광범위한 자원사용 : 실행환경에 따라 메모리와 CPU 자원을 상당히 소비할 수 있습니다.

728x90
반응형