Java, JVM, JDK, JRE

정은영·2023년 9월 17일
1

Java

목록 보기
2/3

JVM (Java Virtual Machine)

JVM은 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환하여 실행합니다. OS에 의존적이기 때문에 특정 플랫폼에 종속적입니다.

JVM은 바이트 코드를 실행하는 표준이자 구현체라고 할 수 있습니다. 이 때 JVM 자체는 표준이고 구현체는 특정 밴더마다 JVM을 다르게 구현할 수 있기 때문에 구현체는 다양합니다. JVM 스팩에만 맞추면 다르게 구현할 수 있는데요. JVM 밴더에는 오라클, 아마존, Azul 등이 있습니다. 즉, 바이트 코드를 어떻게 실행할 수 있는지에 대한 스팩이라고 말할 수 있겠습니다.


JVM은 단독으로 배포되지 않습니다. 최소한의 배포단위가 JRE입니다. 이제 JRE에 대해서 알아보도록 하겠습니다.


JRE(Java Virtual Machine)

JRE는 자바 애플리케이션을 실행할 수 있도록 구성된 배포판입니다.

JRE는 JVM+라이브러리로 구성되어 있습니다. 자바 애플리케이션을 실행할 수 있어야 하기 때문에 JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있습니다.

하지만 JRE는 개발 관련 도구는 포함하지 않습니다.


JRE에 개발 관련 도구까지 포함해서 JDK에서 제공하는데요. JDK에 대해서 알아보도록 하겠습니다.


JDK (Java Development Kit)

JDK는 JRE와 개발에 필요한 툴들을 포함합니다.

오라클은 이전에는 JRE와 JDK 모두 제공했지만 자바 11부터는 JDK만 제공하며 JRE를 따로 제공하지 않고 있습니다.


Java

Java는 프로그래밍 언어이고 플랫폼에 독립적입니다. JDK에 들어있는 자바 컴파일러(javac)를 사용하여 바이트코드(.class 파일)로 컴파일 할 수 있습니다.


JVM 언어

JVM은 JAVA와 직접적으로 연관관계가 있는 것이 아니고 .class 파일만 있으면 OS에 특화된 코드로 변환해주기 때문에 다른 프로그래밍 언어로 코딩을 하더라도 컴파일 했을 때 .class 파일만 생성되면 JVM을 활용할 수 있습니다.

즉, JVM언어는 JVM 기반으로 동작하는 프로그래밍 언어라고 할 수 있고 클로저, 그루비, JRuby, Jython, Kotlin, Scala 등이 있습니다.


Reference

  • 인프런, 더 자바 코드를 조작하는 다양한 방법

0개의 댓글