사람이 프로그래밍 언어로 코드를 짜도 컴퓨터는 바로 읽지 못한다. 컴퓨터는 0과 1로 말해줘야 알아듣는다.
프로그래밍 언어로 번역하느냐 통역하느냐에 따라 컴파일언어와 인터프리트 언어로 나뉜다.
컴파일은 번역, 인터프리트는 통역이다. 컴파일은 번역 해둔걸 컴퓨터가 자국어로 된 코드로 읽기 때문에 실행속도가 빠르다. 반면 인터프리트는 실시간으로 컴퓨터에게 읽어주고 실행시킨다. 개발이 더 간편하고 오류에 취약하고 실행이 더 느리다.
JVM 은 컴파일러가 컴퓨터 언어로 번역시켜줘도 컴퓨터 환경마다(운영체제 등) 쓰는 언어가 달라서 각각 다른 언어로 번역해줘야 했지만 JVM 이라는 프로그램으로 현지 전담 번역가를 두는것과 비슷하다.
JRE 는 JVM을 포함하고 기본적인 산술,출력,통신 기능 등 기본적이고 필수적인 기능들을 직접 구현하지 않아도 되도록 제공한다.
JDK 는 JRE와 JVM을 포함하고 프로그래머를 위한 기능들도 포함한다.