JDK, JRE, JVM
JDK (Java Development Kit)
- 자바 개발 환경으로 자바 어플리케이션을 개발하기 위해 필요한 도구를 제공한다
- JDK는 JRE + 개발을 위해 필요한 도구 즉, 자바 언어를 바이트 코드로 컴파일 해주는 자바 컴파일러(javac), 자바 클래스 파일을 해석해주는 역 어셈블리어(javap) 등을 포함한다.
JRE (Java Runtime Environment)
- JRE는 자바 실행 환경으로 JVM, JAVA 클래스 라이브러리, 기타 JAVA 어플리케이션 실행에 필요한 파일들을 포함한다. JRE는 JVM의 실행환경을 구현했다고 할 수 있다.
JVM (Java Virtual Machine)
- JVM은 자바 가상 머신으로 자바 어플리케이션을 실행하는 가상 머신이다. 실제 컴퓨터로 부터 JAVA 어플리케이션 실행을 위한 메모리를 할당 받아 Runtime Data Area를 구성한다.
- JVM은 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있다. 또한 JVM은 플랫폼에 의존적이다. 즉 리눅스의 JVM과 윈도우즈의 JVM은 다르다. 단, 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있다. JVM은 다음과 같은 역할을 한다.
- 바이너리 코드를 읽는다.
- 바이너리 코드를 검증한다.
- 바이너리 코드를 실행한다.
- 실행환경(Runtime Environment)의 규격을 제공한다. (필요한 라이브러리 및 기타파일)
- JVM은 인터프리터와 JIT 컴파일러를 통해 바이트 코드를 각 운영체제에 맞는 기계어로 해석시켜 실행시키고, 가비지 콜렉터를 통해 어플리케이션의 동적 메모리를 관리한다.
- 자세한 내용은 The Java® Virtual Machine Specification와 • Java Virtual Machine Guide에서 확인 가능하다.
JVM에 대해 더 자세히 알고 싶다면 아래 링크를 참고.
[JAVA] JVM (Java Virtual Machine) 이란?