본문 바로가기
개발자 준비/JAVA

JVM, JRE, JDK

by osul_world 2021. 12. 18.
728x90

JVM, JRE, JDK


 

 

JVM(java virtual machine)


  • 자바 가상 머신
  • 머신이라고 하지만 프로그램이다.

개요

C,C++,JAVA와 같은 언어들은 인간을 위해 만들어 진것으로 이를 컴퓨터가 이해하도록 하려면 01로 이뤄진 기계어로 번역해야한다.

C같은 컴파일 언어들은 컴파일러가 그 작업을 대신해준다.

그런데 컴퓨터들이 모두 같은 기계어를 쓰는것은 아니다.

A컴퓨터는 읽을수있는 C코드가 B 컴퓨터에서는 해석되지 못한다.

이런 불편함을 해결하기 위해 JAVA는 JVM이라는 전담 통역센터를 만든것이다.

 

JVM이란?

자바로 코딩후 컴파일을 하면 바이트코드라는게 생성된다.

사람이 쓰는 JAVA 코드에서 컴퓨터가 읽는 기계어의 중간단계라고 생각하자.

Hello.java를 코딩해서 javac(자바 컴파일러)로 코드를 컴파일하면 Hello.class가 생성 되는데 이 Hello.class가 바로 바이트 코드이다.

이 바이트 코드 파일을 JVM에게 가져다주면 그때그때 컴퓨터에 맞게 바이트 코드를 기계어로 번역해준다.

즉, JVM은 자바로 짜서 컴파일한 소프트웨어들이 JVM이 설치된 어떤 기기에서도 동작하도록 해주는 것이다.

따라서 WORA(Write One Run Anywhere)가 자바의 원칙인것이다.

어떤 기기든 바이트 코드를 돌릴려면 JVM만 준비하면 된다.

 

 

 

JRE(java runtime environment)


  • 자바 런타임 환경

개요

컴파일 타임과 런 타임

컴파일 타임

코딩이 완료된후 실행 혹은 배포전에 기계어로 미리 번역하는 작업을 컴파일이라고 하고

컴파일하는 시간을 컴파일 타임이라고 한다.

런 타임

자바로 짠 소프트웨어가 컴파일 및 빌드가 완료된 다음 실행되는 시점을 런 타임이라고 한다.

빌드란?

소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정

빌드 단계에 컴파일이 포함되어있다.

JRE란?

우리가 자바에서 제공하는 라이브러리(List,HashMap 등)을 사용할수있는 이유는 jar라는 파일 덕분인데,

jar 파일을 열어보면 List.clas 등 자바 라이브러리들이 바이트 코드로 저장되어있다.

이렇게 널리 쓰이는 JVM에서 동작할 라이브러리들과 JVM을 세트로 묶어 설치되도록 하는게 JRE이다.

JRE가 JVM을 포함하고있기 때문에 JRE만 설치하면 어디서든 자바를 사용할수있다.

 

JDK(java development kit)


  • 자바 개발 도구

개요

자바를 컴파일할때 쓰는 컴파일러 javac, 자바를 디버깅할때 쓰는 jdb 등 개발에 필요한 도구들과 JRE, JVM을 포함하는 종합 도구

JDK만 설치하면 JVM JRE 및 다른 개발 툴들을 모두 제공받을수있다.

JDK란?

JVM과 JAR 파일에 라이브러리들을 함께 제공하는 JRE를 포함하고 JAVAC,JDB등 다양한 개발에 필요한 도구들을 포함하여 한번에 제공하는 자바 개발도구를

JDK라고 한다.

728x90

'개발자 준비 > JAVA' 카테고리의 다른 글

[JAVA 더 깊게] JAVA One Paper  (0) 2022.01.10
서버간 통신의 시작 RestTemplate  (0) 2022.01.04
Optional(for null-safe)  (0) 2021.12.31
Record  (0) 2021.11.23
Enum 리마인드  (0) 2021.11.23