[Java] ☕ JRE와 JDK란
📖 플랫폼 독립성
자바의 가장 큰 특징이 무엇일까?
컴파일 된 코드가 플랫폼 독립적
자바는 다른 언어와 다르게 중간 언어를 사용한다.
따라서, 다른 언어의 컴파일러가 생성하는 결과물은 기계어라서 바로 실행이 가능한 반면에, 자바가 생성하는 클래스 파일인 .class
는 바이트 코드만 있고, JVM
의 도움 없이 바로 실행은 불가능하다.
하지만, 이로 인해 자바만의 커다란 특징이 나타나게 되는데, c++로 컴파일 완료가 된
.exe
파일은 오직 윈도우에서만 작동하고, 유닉스나 리눅스에서는 정상적으로 작동하지 않는다.
Java는 컴파일을 하면.class
라는 파일로 저장되는데, 이 파일은 어떠한 플랫폼으로 가져가더라도JVM
가 있으면 정상적으로 작동된다.
📖 자바 플랫폼
Java
에 대해서 공부하다보면 헷갈리는 3가지 단어가 있다.
- 자바 가상 머신(Java Virtual Machine,
JVM
) - 자바 런타임 환경(Java Runtime Environment,
JRE
) - 자바 개발 키트(Java Development Kit,
JDK
)
JVM(Java Virtual Machine)란?
자바 가상 머신 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어이다.
Java는 어떠한 JVM
에서도 실행이 가능하기 때문에 독립적인데 비해서, JVM
은 플랫폼에 의존적이다.
Java는 플랫폼에 종속적이지 않지만 JVM은 플랫폼에 종속적이다.
JRE(Java Runtime Environment)란?
자바로 만들어진 프로그램을 실행시키는데 필요
한 각종 라이브러리, API, JVM이 포함되어 있다.
간단하게, 개발(쓰기)는 안되고, 실행(읽기)만 가능한 프로그램이다.
JDK(Java Development Kit)란?
개발자들이 자바로 개발하는데 필요한
각종 라이브러리, javac, javadoc등의 개발도구 및 JRE를 포함하고 있다.
이에 대해서 더 알아보고 싶으면 다음을 참고하자
자바 가상 머신 JVM
📖 JRE와 JDK의 차이점 (윈도우)
실제로 자바 다운로드를 할 때, JRE와 JDK 두가지 버전의 차이가 있다.
따라서, 2가지 컴퓨터에 서로 다른 것을 다운로드 받고 어떠한 차이가 있는지에 대해서 알아보도록 하자.
다음과 같이 간단한 Main.java
파일을 생성해 주었다.
public class Main {
public static void main(String[] args) {
System.out.println("Hello Anna"); // abc
}
}
이를 다음 두가지 컴퓨터에 넣고 여러 명령어를 사용해 보았다.
🍄 JDK
이때, javac
은 .class
를 생성해주는 명령어로 JDK
에 포함되어 있다.
JDK
는 .class
파일 생성후 실행까지 잘 되는 모습이다.
🍄 JRE
JRE
는 컴파일러가 없이 JVM
과 라이브러리만 존재하기 때문에, .class
파일 자체를 생성하지 못하는 모습이다.
개인 공부 기록용 블로그입니다.
틀리거나 오류가 있을 경우 제보해주시면 감사하겠습니다.😁