본문
자바 프로그램 개발과 구동
# 자바 프로그램 개발과 구동
- JDK : Java Development Kit / 자바 개발 도구
- JRE : Java Runtime Environment / 자바 실행 환경
- JVM : Java Virtual Machine / 자바 가상 기계
JVM(Java Virtual Machine)의 존재와 역할을 아는 것이 자바 개발 환경을 이해하는 데 필수적이다.
JVM은 이름 그대로 가상기계다. 현실 세계에서 컴퓨터를 구동하기 위해서는 물리적인 컴퓨터인 하드웨어와 운영체제, 그리고 그 위에서 구동될 소프트웨어가 필요하다. 거기에 더해 소프트웨어를 개발할 수 있는 개발 도구가 필요하다. 자바의 가상 세계는 이러한 현실 세계를 그대로 모방하고 있다.
현실세계 |
가상세계(자바월드) |
|
소프트웨어 개발 도구 |
JDK - 자바 개발 도구 | JVM용 소프트웨어 개발 도구 |
운영체제 |
JRE - 자바 실행 환경 | JVM용 OS |
하드웨어 - 물리적 컴퓨터 |
JVM - 자바 가상 기계 | 가상의 컴퓨터 |
[표] 현실세계 vs 가상세계
현실세계에서 소프트웨어, 즉 프로그램은 개발자가 개발 도구를 이용해 개발하고 운영체제를 통해 물리적 컴퓨터인 하드웨어 상에서 구동된다. 자바가 만들어주는 가상 세계도 이와 마찬가지다. 자바 개발 도구인 JDK를 이용해 개발된 프로그램은 JRE에 의해 가상의 컴퓨터인 JVM 상에서 구동된다. 이를 잘 이해하기 힘들다면 RPG 게임에서 당신의 아바타가 게임 내에서 개발도구를 이용해 프로그램을 개발하고, 그 프로그램을 RPG 게임 내의 컴퓨터에서 실행한다고 생각해보자. 게임 내의 가상의 컴퓨터가 JVM에 해당하며, 그 가상의 컴퓨터를 제어하는 운영체제가 JRE에 해당한다. 그리고 가상의 세계에서 당신의 아바타가 사용한 개발 도구가 JDK에 해당한다. 다만 배포되는 JDK, JRE, JVM은 편의를 위해 JDK가 JRE를 포함하고 다시 JRE는 JVM을 포함하는 형태로 배포된다. JDK는 자바 소스 컴파일러인 javac.exe를 포함하고 있고, JRE는 자바 프로그램 실행기인 java.exe를 포함하고 있다. 자바가 이런 구조를 택한 이유는 기존 언어로 작성한 프로그램은 윈도우 95용, 윈도우 XP용, 윈도우 7용, 윈도우 8용, 리눅스용, 애플 맥 OS X용 등 각 플랫폼(하드웨어와 OS의 조합)용으로 배포되는 설치파일을 따로 준비해야 했던 불편함을 없애기 위해서다. 자바 개발자는 본인이 사용 중인 플랫폼에 설치된 JVM용으로 프로그램을 작성하고 배포하면 각 플랫폼에 맞는 JVM이 중재개로서 각 플랫폼에서 프로그램을 구동하는 데 아무 문제가 없게끔 만들어주는 것이다. 이러한 자바의 특성을 Write Once Run Anywhere라고 한다.
- 출처 및 참고자료 : 스프링 입문을 위한 자바객체지향의 원리와 이해(김종민 저)
댓글