개발쿠키

[JAVA]JVM, JRE, JDK 본문

개발/java

[JAVA]JVM, JRE, JDK

쿠키와개발 2023. 7. 3. 13:31

JVM(Java Virtual Machine)

JVM은 일종의 프로그램이다. 

 

우선 JAVA와 C와 같은 언어들은 컴퓨터가 알아들을 수 있도록 소스 코드를 컴파일 하여 기계여로 변환하는 과정을 거친다. 하지만 c나 c++ 등의 언어들은 각 OS에 맞는 컴파일러가 없다면 윈도우에서 개발한 프로그램이 다른 OS에서는 동작하지 않는다.

 

하지만 JAVA는 "Write once, Run anywhere"라는 모토를 가지고 있다. 말 그대로 한 번 작성되면 다른 운영체제에서도 동일하게 실행 될 수 있다는 의미이다. 이를 가능하게 하는 것이 JVM이다. 각 OS 별로 JVM이라는 통역사를 둔다고 생각하면 이해하기 편하다. 

 

JAVA는 컴파일러((javac)가 컴파일시에 작성된 코드(.java 파일)를 바로 기계어로 변환하는 것이 아니라 바이트 코드(.class) 형태로 변환시킨다.바이트 코드는 사람이 작성한 코드와 컴퓨터가 읽을 수 있는 코드의 중간 단계라고 보면 된다. 이후에 바이트 코드를 JVM에게 넘겨주면 그때 그때 기계어로 바꿔준다. 그리고 이처럼 그때 그때 기계어로 통번역 해주는 방식을 Just in Time 즉 JIT 컴파일이라 한다. 해당 내용은 나중에 자세히 알아보자!

 

정리하면 JVM은 바이트코드를 기계어로 변환시켜 실행시킬 수 있는 통역사라고 보면 된다. 


JRE(Java Runtime Environment)

JRE는 자바로 개발된 소프트웨어를 실행시키는데 필요한 각종 API와 JVM까지 포함하고 있다.

예를 들어 List, Map 등의 클래스들을 포함한다고 보면 된다.


JDK(Java Development Kit)

JRE의 상위 버전이라고 생각하면 된다. JRE는 쓰기는 불가능 하고 읽기만 가능하며 사용자가 자바 프로그램을 실행시키기 위한 환경이다. 하지만 JDK는 개발도 하고 실행도 시키기 위한 구성을 가지고 있다. 

 

 

최종적으로 간략하게 정리하면 JVM < JRE < JDK 라고 보면된다 JRE 안에는 JVM을 포함시키고 있고 JDK는 JRE를 포함한다고 보면 된다.

 

 

참고 - https://www.youtube.com/watch?v=VvVruEDCSSY&t=106s

'개발 > java' 카테고리의 다른 글

[JAVA]클래스, 객체, 인스턴스  (0) 2023.07.20
[JAVA]Call By Reference, Call By Value  (0) 2023.07.14
[JAVA]JVM  (0) 2023.07.06
[JAVA]String  (0) 2023.07.04
[Java]Map getOrDefault  (0) 2023.06.27