JDK - Java Delvelpmetn kit
JRE - Java Runtime Environmetn
JVM - Java Virtual Machine
JDK, JRE를 알기전에 JVM을 알아보자
JVM은 컴파일된 바이너리 코드를 실행시켜주는 것이다.
먼저 java와 c와 다른점을 찾아보자. 컴퓨터들은 다 같은 기계어를 쓰는게 아니다. 윈도우에서 돌게 컴파일한 c언어 파일은 맥이나 리눅스에서 돌지 않는다.
하지만 java는 jvm위에서 실행되기 때문에 윈도우, 맥, 리눅스 환경에 구애받지 않고 다 돌릴 수 있다.
Hello.java 파일을 컴파일하면 바이트코드가 생긴다. Hello.class가 만들어진다. <- 이게 바이트코드이다.
이 바이트 코드를 JVM에 가져다주면 기계어로 통역을 해준다는 것이다.
Java Runtime Environment
실행되는 시점에 그 환경요소에서 필요한 것이다.
예를들어 우리가 자바의 자료구조인 List, Map 기능들을 사용할 수 있는 이유는 이것들이 컴파일된 클래스로 제공되기 때문이다.
이러한 기능들과 JVM을 세트로 묶어서 설치할 수 있게 한것이 JRE이다.
JRE를 포함하고 개발에 필요한 툴들을 제공한다
예를들면
javac 자바 소스파일을 바이트코드로 변환하는
java - 자바 응용 프로그램 로더. javac 컴파일러가 만든 클래스 파일을 해석 및 실행한다.
jar - 서로 관련있는 클래스 라이브러리들과 리소스들을 하나의 JAR 파일로 묶어주는 툴.
최종사용자가아닌 개발자들을 위한 기능들도 탑재하고 있다.
JRE에는 컴파일된 자바파일인 class파일을 실행시킬수 있는 JVM과 library들을 가지고있고
JDK는 컴파일해주고 디버깅 테스트 할 수 있는 툴들과 JRE가 포함되어 있다.
참고 :
https://www.youtube.com/watch?v=VvVruEDCSSY
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EA%B0%9C%EB%B0%9C_%ED%82%A4%ED%8A%B8