JVM,JRE,JDK 차이는 무엇일까?

Chan Young Jeong·2023년 1월 1일
0

All About JAVA

목록 보기
3/10
post-thumbnail

JVM이란 무엇일까?

자바 가상 머신은 어렵게 쓰여있지만 일종의 프로그램이다. 그렇다면 무엇을 하는 프로그램일까요?

0,1로 작성된 기계어라고 해서 모든 컴퓨터에서 똑같이 동작하는 것이 아님! 윈도우에서 돌게 컴파일한 기계어는 맥이나 리눅스에서는 돌지 않음
->따라서 일일히 환경에 따라 맞는 기계어로 번역해야하는 문제가 발생

바로 이런 문제를 해결하기 위한 것이 JVM

Hello.java(소스 코드) -- javac --> Hello.class (바이트 코드) -- jvm --> 기계어

컴파일러: 우리가 작성한 프로그래밍 언어를 컴퓨터가 알아들을 수 있는 기계어로 바꿔주는 작업을 한다! C, 자바 같은 언어가 컴퍼일 언어임
cf) 파이썬은 인터프리터 언어

JIT 컴파일 방식: 실행 시점에 그때그때 기계어로 통번역 해주는 방식

W-O-R-A: 자바의 원칙! 한번 작성하면 모든 곳에서 실행한다! (Write Once Run Anywhere)

JRE이란 무엇일까?

Java 애플리케이션을 생성하고 실행하기 위한 일련의 구성 요소입니다. JRE는 Java 개발 키트(Java Development Kit, JDK)의 일부입니다

  • 단순히 작성한 코드만으로 돌아갈 수가 없음. 예를 들어 리스트, 맵, 셋을 사용할 수 있는 이유는 우리가 일일히 작성해서 그런 것이 아니라 바이트 코드로 컴파일된 클래스로 제공 되기 때문!
  • JRE만 있으면 자바로 작성된 프로그램을 돌릴 수 있음! JVM도 포함하기 때문
  • JVM, Java 클래스 라이브러리, Java 클래스 로더로 구성되어 있음.
  • Java 클래스 라이브러리에는 필요 시 호출할 수 있는 미리 작성된 코드 컬렉션이 포함되어 있습니다.
  • 클래스 로더는 클래스 라이브러리를 JVM에 연결하여 프로그램이 실행되는 동안 JVM으로 로드합니다. 그러면 JVM이 코드를 실행합니다.

JDK이란 무엇일까?

JDK가 JRE를 포함함. 추가로 javac, jdb, jar 등 프로그래머를 위한 기능도 탑재함!

대표적으로 오라클 JDK, Zulu 등 다양한 JDK 존재함


출처

https://www.redhat.com/ko/topics/cloud-native-apps/what-is-a-Java-runtime-environment

0개의 댓글