JVM, JRE, JDK

1. JVM(Java Virtual Machine)

  • 단독으로 배포되지 않는다.

  • 자바 파일을 컴파일 해서 생긴 클래스파일(바이트코드)을 운영체제에 종속적인 코드로 변환하여 실행한다. -> 특정 운영체제에 종속적 이라고 볼 수 있다..

  • JVM 벤더 : 오라클, 아마존, Azul...(다양하다..)

  • JVM 은 자바 프로그램이 실행되는 프로세스를 의미한다. -> java 명령어를 통해서 애플리케이션이 수행되면, JVM 위에서 애플리케이션이 동작한다.

  • 클래스를 읽어들이고, 메모리에 올리는 등 다양한 역할을 한다.

2. JRE(Java Runtime Enviroment)

  • 최소 배포단위이다.

  • 자바 애플리케이션을 실행하는 것이 목적이다.(코딩이 목적이 아니다..)

  • 바이트 코드를 실행하기 위해서 JVM 이 필요하고, 필수적인 자바 문법을 사용하기 위한 라이브러리가 필요하다.

  • 자바 개발 관련 도구는 포함하지 않는다.(개발 관련 도구는 JDK 에서 제공한다)

3. JDK(Java Development Kit)

  • 자바 개발 도구(자바 컴파일러도 포함되어 있다)

  • 자바를 실행하기 위한 환경(JRE) 을 제공하고, 추가적으로 자바를 개발하기 위한 도구 또한 제공하는 것을 JDK 라고 부른다.

  • 자바 11 부터는 JDK만 제공한다.(해당 버전부터 JDK 가 최소 배포단위이다) -> JRE 와 JDK 버전이 맞지 않으면 돌아가지 않는 이슈는 자바 11부터는 존재하지 않는다.

4. JVM 언어

  • JVM 기반으로 동작하는 프로그래밍 언어.

  • JVM 은 .java 파일이 아닌, .class 파일을 사용해서 실행시키기 때문에, .class 파일을 만들어주는 언어들에서 사용할 수 있다. Ex) Java, Kotlin ...

Last updated