Java

[Java] JVM 2

parangofsky 2026. 1. 7. 23:39
jvm이란 이름에 자바가 붙었지만 자바만 사용할 수 있는 건 아니다.

 

jvm은 소스 코드(.java)를 직접 읽는 것이 아니라, 컴파일된 결과물인 자바 바이트코드(.class 파일)를 실행합니다. 따라서 어떤 언어든지 컴파일러가 소스 코드를 JVM 바이트코드로 변환해주기만 하면 JVM 위에서 완벽하게 돌아간다.

대표적으로 다음과 같은 언어들이 있다. 

1. 코틀린 (Kotlin) 2. 스칼라 (Scala) 3. 그루비 (Groovy) 4. 클로저 (Clojure)

 

그렇다면 jvm 계열 언어를 일반적으로 컴파일해서 사용할 수는 없을까?

 

가능하다. 네이티브 방식이라고 해서, 실행 시점에 JVM이 코드를 해석하는 게 아니라, 실행하기 전(빌드 타임)에 미리 기계어로 다 번역해 버리면 된다. 

 

구분 JVM 실행 방식 (Standard) 네이티브 컴파일 방식 (GraalVM 등)
적합한 곳 대규모 백엔드 서버, 장시간 가동되는 서비스 람다(Serverless), 마이크로서비스, CLI 도구
시작 속도 느림 매우 빠름
최종 성능 매우 높음 (JIT 최적화 덕분) 높음 (고정된 성능)
배포 JRE/JDK 설치 필요 독립 실행 파일 하나로 끝

 

 

 

자바 프로그램은 JVM이라는 하나의 프로세스 안에서 돌아가는 여러 스레드의 집합\



자바 프로그램은 JVM이 OS로부터 할당받은 메모리 공간 내부에서만 움직인다.

다만, 물론 자바 코드 안에서 ProcessBuilder나 Runtime.getRuntime().exec() 같은 명령어를 사용하면, 자바 프로그램이 OS에 요청해 자식 프로세스가 생성될 수 있다.

'Java' 카테고리의 다른 글

[Java] 리플렉션(Reflection)  (0) 2026.01.13
[Java] 인터페이스와 추상클래스  (0) 2026.01.10
[Java] 객체지향 - final 2  (0) 2026.01.09
[Java] 객체지향  (0) 2026.01.08
[Java] JVM에 대하여  (0) 2026.01.05