티스토리 뷰

Java

자바, JVM, JDK, JRE이란?

J-Mandu 2022. 3. 27. 17:38

JVM (Java Virtual Machine)

자바 가상 머신으로 자바 바이트 코드(.class)를 운영체제(OS)가 실행할 수 있는

네이티브 코드로 변환(Interpreter, JIT Compiler) 하여 실행 합니다.

해당 운영체제에 맞는 네이티브 코드로 바꿔서 실행해야 하므로,

JVM은 특정 플랫폼에 종속적이며,

JVM은 자바(JAVA)와 운영체제 사이에서 중개하는 역할을 수행하기 때문에

자바가 운영체제에 신경 쓸 필요 없이 재사용이 가능하도록 해줍니다.

 

JVM은 바이트 코드를 실행하는 표준 스펙(JVM)이자 구현체(특정 밴더가 구현한 JVM)입니다.

JVM 벤더로는 Oracle, Amazon, Adoptium, Azul 등 여러 벤더들이 있습니다.

JVM의 자세한 스펙은 https://docs.oracle.com/javase/specs/jvms/se11/html/  참조 하시면 됩니다.

그리고 JVM 기반으로 동작하는 프로그래밍 언어로는 클로저, 그루비, JRudy, Kotlin, Scala 등이 있습니다.

 

자바 바이트 코드 파일(.class)파일을 만드는 법을 모르시는 분들을 위해서

Mac OS 환경으로 잠시 설명드리겠습니다.  (아시는 분들은 넘어가시면 되겠습니다.)

터미널 환경에서 HelloJava.java 파일을 생성하고서,

public class HelloJava {
	public static void main(String args[]){
		System.out.println("Hello, Java");
	}
}

위 코드와 같이 작성 후 저장합니다. 

javac HelloJava.java 명령어를 통하여, class파일 생성하였습니다.

ls 명령어로 class파일이 잘 만들어졌는지 확인을 하고,

드디어 자바 바이트 코드를 볼 차례입니다.

javap -c HelloJava 명령어를 작성 후 엔터를 치면,  위 사진처럼 자바 바이트 코드를 볼 수 있게 됩니다.

 

출처 :https://www.inflearn.com/course/the-java-code-manipulation

위의 사진처럼 JVM은 홀로 제공되지 않습니다.

최소한의 배포 단위는 JRE입니다. 

이어서 JRE에 대하여 간략히 설명하겠습니다.

 

출처 :https://docs.oracle.com/javase/8/docs/index.html

 

JRE (Java Runtime Environment)

JRE의 배포판은 목적은 자바 애플리케이션을 실행할 수 있도록 구성된 배포판이며,

JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있습니다.(JVM + 라이브러리)

 

개발자의 경우에는 JRE만 받아서 쓰는 경우는 거의 없습니다.

왜냐하면, 자바를 개발하는 데에 필요한 도구들은 포함되지 않습니다. (개발 관련 도구는 JDK에서 제공됩니다.)

 

JDK (Java Development Kit)

JDK는 Java를 사용하기 위해 필요한 모든 기능(JRE + 개발 관련 도구들)을 갖춘 배포판입니다.

오라클은 자바 11부터는 JDK만 제공하고 있습니다.

모듈 시스템을 사용할 수 있어서 사용자가 JRE를 만들 수 있기 때문에 JRE를 따로 제공하지 않습니다.

 

자바 (JAVA)

프로그래밍 언어이며,

소스 코드를 작성할 때 사용하는 자바 언어는 플랫폼에 독립적입니다.

 

이로써 공부한 내용을 간략히 정리해보았습니다. 

다음 시간에는 JVM에 대해서 더 자세히 올리겠습니다. 

감사합니다.

 


출처

https://www.inflearn.com/course/the-java-code-manipulation