🥅 목표
📝 Java 개념 Review & 관련 기술 면접 질문에 대비해 보자
(1) JVM이 뭘까요?
(2) JDK, JVM, JRE 의 차이점을 말해주세요
Java의 동작구조
JDK, JVM, JRE 에 대해 자세히 살펴보기 전에 Java의 동작 구조를 한 번 살펴 보자
개발자는 사람이 이해할 수 있는 언어로 소스 코드를 작성한다.(.java)
자바 컴파일러(javac.exe)가 자바 소스코드를 읽어서 가상 머신이 이해할 수 있는 바이트 코드로 변환한다.(.class)
Class Loader 를 통해 .class 파일이 JVM 메모리에 적재된다.
JVM 이 JAVA Interpreter(java.exe) 및 JIT 컴파일러 를 이용하여 바이트 코드를 실행한다.
JVM 이 메모리 관리,스레드 관리 등 런타임 환경을 제공한다.
JVM(Java Virtual Machine)이란?
위 자바 코드의 동작 순서에서 JVM이 대략적으로 어떤 역할을 하는지 알 수 있었다. JVM 이란 자바 가상 머신으로 자바 프로그램을 실행하기 위한 가상 컴퓨터 역할을 한다. 여기서 가장 중요한 점은 JVM은 자바와 운영 체제 사이에서 중계 역할을 하여, 자바가 플랫폼 독립적 으로 실행 가능하게 해준다는 것이다. 정리하면 다음과 같다.
JVM 은 자바 가상 머신을 자바 바이트코드를 실행하는 플랫폼 독립적인 실행 환경을 제공한다.
JVM은 컴파일된 바이트 코드를 해당 운영 체제가 이해할 수 있는 기계어로 변환하고 실행한다.
JVM의 존재로 같은 자바 프로그램을 한 번 작성하면 어느 운영체제에서나 실행된다.(Write Once, Run Any where)
JDK&JRE 와의 차이점
JDK와 JRE 또한 JVM 과 마찬가지로 자바 개발 및 실행에 있어 필수적인 구성요소이다. 구조는 대략적으로 다음과 같다.
JRE(Java Runtime Environment)는 자바 실행 환경으로 자바 프로그램을 실행하기 위해 필요한 JVM 과 자바 클래스 라이브러리, 그리고 다른 지원 파일들을 포함한다. JRE만으로는 Java 프로그램 실행은 가능하지만 컴파일러가 없기 떄문에 자바 프로그램 개발은 불가능하다. 정리하면 JRE는 JVM을 동작하기 위한 자바 실행 환경이라 보면 되겠다.
JDK(Java Development Kit) 은 자바 개발 키트로 자바로 프로그램까지 개발하고 싶다면 JDK를 설치해야만 한다. 보통 자바를 설치한다고 할 떄 이는 JDK 를 설치한다는 뜻과 거의 동일하다. JDK는 JRE(JVM)의 기능을 포함하고 있으며 .java 파일들을 .class 파일들로 변환하는 JavaCompiler(javac) 기능이 있다.
JDK는 jdb 개발 도구를 통해 디버깅 기능도 제공한다.
🔚 결론
자 이제 관련 면접 예상 질문을 바탕으로 정리해보자
JVM이란?
⏩ JVM은 컴파일된 바이트 코드를 운영체제가 이해할 수 있는 기계어로 번역해 실행하는 가상 머신이다.JDK 와 JRE의 차이점은?
⏩ JRE는 JVM을 포함하여 자바 프로그램을 실행하기 위해 필요한 자바 클래스 라이브러리, 그 밖에 다른 지원파일을 포함하는 자바 실행 환경이다. (컴파일러가 없기 때문에 오직 실행만 가능하다.)
JDK는 자바 컴파일러를 포함해 자바로 프로그램을 개발하기 위해 필요한 모든 도구를 포함한 키트이다. 자바로 프로그램을 개발하려면 JDK를 설치하여야 한다.