본문 바로가기
> 개발/JAVA

자바의 작동방식과JDK, JRE, JVM의 관계

by @일리 2023. 7. 13.

자바의 작동방식

자바의 작동방식

소스 파일은 javac.exe라는 컴파일 프로그램에 의해 바이트 코드인 .class로 컴파일된다. 이후 .class를 실행시키면 JVM에서 java.exe 프로그램으로 컴파일된 바이트 코드를 메모리에 로딩하고, 윈도우라면 java.exe파일로 .class 파일을 실행하고 그 외에 맥이나 유닉스에서는 java 명령어로 .class 파일을 실행한다. 

 

이미지에 적어놨듯이 javac.exe는 JDK에서 제공하는 컴파일러고 java.exe는 JVM에서 제공하는 프로그램이다. 그러니까 코드를 실행했을 때 JVM이 구동된다고 이해하면 된다. 그렇다면 JDK는 뭐고 JVM은 무엇이며 이 둘의 관계는 어떻게 될까?

 

JDK, JRE, JVM

JDK, JRE, JVE의 관계

 

보이는 것처럼 JDK, JRE, JVM의 관계는 " JDK > JRE > JVM " 이다. 

 

JDK (Java Development Kit)

JDK는 자바 애플리케이션 개발을 위해 오라클에서 제공하는 소프트웨어 개발 키트이다. javac.exe라는 자바 컴파일러와 런타임 라이브러리, 기타 유틸리티 등 자바 개발에 필요한 도구와 라이브러리가 JDK에 포함되어 있다. JDK는 자바 프로그램 작성부터 컴파일, 실행을 위해 필요한 모든 리소스를 제공한다.

 

JDK에는 여러 가지 버전이 있는데 Java SE, Java EE, Java ME 등이 있다. 내가 설치한 JDK는 Java SE이고, 이것은 자바 플랫폼 중 가장 기본이 되는 표준 에디션이다. 

JRE (Java Runtime Environment)

이름 그대로 자바의 실행 환경이다. 자바 프로그램을 실행하기 위한 도구들이 들어있다. JRE에는 JVM과 라이브러리(통합 라이브러리, 언어 및 유틸리티 라이브러리)가 들어있다. 

JVM (Java Virtual Machine)

JVM은 자바 바이트 코드를 실행 시키기 위한 가상화된 실행환경을 제공하는 가상머신이다. JDK를 설치하면 운영체제 위에 JVM이 설치가 된다. 이 JVM 덕분에 각기 다른 운영체제에서 만든 자바 프로그램을 다른 운영체제에서 실행할 수 있다. 쉽게 설명하면 윈도우에서 만든 프로그램을 맥 OS에서도 실행할 수 있게 된다. 

 

C언어에서는 .c 파일을 컴파일을 하면 윈도우에서는 .exe 파일이 만들어지고, mac OS에서는 .out 파일이 생성된다. 이와 달리 자바에서는 어느 OS에서든 .java 코드를 컴파일하면 .class 코드가 만들어진다. 코드를 RUN 하는 순간 JVM이 실행이 되고, JVM은 이 바이트 코드를 실행하는 OS에 맞게 한 번 더 컴파일해서 메모리에 로딩하여 실행한다.

 

이렇게 JVM이 있는 덕분에 운영체제에서 독립적으로 프로그램을 개발할 수 있다. JVM의 또 다른 특징으로 자동으로 메모리를 관리해준다는 점이 있는데, 이 부분은 나중에 JVM의 메모리 모델과 함께 공부를 해보는 게 좋을 것 같아서 나중에 포스팅할 예정이다.

 

댓글