한번 쓰고 모든 곳에서 실행한다(Write Once, Run Anywhere / WORA) - JAVA의 철학
자바 가상머신(Java Virtual Machine)의 약자로, 자바를 실행하는 머신으로 쉽게 말하면 자바를 돌리는 프로그램이다. 자바로 작성된 모든 프로그램은 JVM에서만 실행될 수 있으니 무조건 JVM이 설치되어 있어야 한다.
✅ 보통 JRE(Java Runtime Environment)에 포함되어 있기 때문에, 컴퓨터 운영체제에 맞는 자바 실행환경(JRE)가 설치되어 있으면 기본적으로 자바 가상 머신이 설치되어 있다는 것이다.
1. Java Compiler가 Java로 작성된 소스 코드(.java)를 Byte Code(.class)로 컴파일한다.
2. JVM이 컴파일된 Byte Code를 기계어로 변환한다.
3. JVM에 의해 컴파일된 기계어는 바로 CPU에서 실행되어 사용자에게 서비스를 제공한다.
JIT 컴파일러(Just-In-Time Compiler)?
런타임 시 JVM이 클래스 파일을 로드하고 각 개별 바이트 코드의 시맨틱을 판별하여 해석할 때 속도가 느려지는데, 이를 해결하기 위해 런타임 시 바이트 코드를 원시 머신 코드로 컴파일함으로써 Java 프로그램의 성능을 향상시키는 데 도움을 준다. JIT 컴파일러는 같은 코드를 매번 해석하지 않고, 실행할 때 컴파일을 하면서 해당 코드를 캐싱하여, 이후 바뀐 부분만 추가로 컴파일하고 나머지는 캐싱된 코드를 사용함으로써 성능을 향상시키는 동적 번역(Dynamic Translation)을 수행한다.
자바 프로그램의 실행 과정
1. 소스코드(.java)를 작성
2. 컴파일러(Complier)는 자바 소스코드를 이용하여 클래스 파일(.class)을 생성 -> JVM이 인식할 수 있는 바이트 코드 파일
3. JVM은 클래스 파일의 바이트 코드를 해석하여 바이너리 코드로 변환하고 프로그램 수행
4. 소스코드의 수행 결과가 컴퓨터에 반영
자바 애플리케이션을 구축하기 위한 핵심 기술 패키지 중 하나로, 개발자들이 JVM과 JRE에 의해 실행되고 구동될 수 있는 자바 프로그램을 생성(개발)할 수 있게 해준다.
- JDK는 JRE을 포함하고, JRE는 JVM을 포함하기 때문에, JDK를 설치하면 JRE, JVM은 자동으로 설치된다.
- JDK에는 "자바 컴파일러(javac, java compiler)"를 포함한다. 컴파일러란, 우리가 작성한 자바 문법을 컴퓨터가 이해할 수 있는 기계어로 바꿔주는 번역기이다. .java -> .class