Java SE(Java Platform, Standard Edition)는 자바의 표준안이다. 자바라는 언어가 어떠한 문법적인 구성을 가졌는지와 같은 것들을 정의하고 있다. 즉, 구체적인 소프트웨어가 아니라 그 소프트웨어의 설계도라고 할 수 있다. 소프트웨어에서는 설계도라는 표현 대신 명세서(spec, specification)이라는 표현을 사용한다. 이 명세서에 따라 자바가 만들어지게 된다.
JDK(Java Development Kit)는 Java SE의 표준안에 따라 만들어진 구체적인 소프트웨어이다. 자바 코드를 컴파일하는 컴파일러와 개발에 필요한 각종 도구, JRE가 포함되어 있다. 즉, 자바를 이용해 개발을 하기 위해서는 JDK가 필요하다.
JDK의 bin 디렉토리에는 자바로 프로그램을 개발하기 위해 필요한 실행파일들이 들어있는데, 주요 실행파일들은 다음과 같다.
참고) 바이트코드 : JVM이 이해할 수 있는 기계어. JVM은 바이트코드를 OS의 기계어로 변환하여 OS로 전달한다.
JRE(Java Runtime Environment)는 자바가 실제로 동작하는데에 필요한 JVM, 라이브러리, 각종 파일들이 포함되어 있다. 자바로 작성된 응용프로그램이 실행되기 위한 최소환경으로, 개발이 아닌 응용프로그램의 실행만을 위해서는 JRE가 필요하다.
JVM(Java Virtual Machine)은 자바를 실행하기 위한 가상 기계이다. 자바로 만들어진 소프트웨어는 모두 JVM이라는 가상화된 환경에서 실행되고, 하드웨어나 운영체제에 따라 달라질 수 있는 호환성의 문제는 운영체제 버전에 따라 만들어진 JVM이 운영체제가 이해할 수 있도록 변환하여 해결한다. 즉, 하나의 자바 프로그램을 만들면 운영체제와 하드웨어에 관계없이 실행 가능하다.(Write once, run everywhere)
그림으로 나타내면 다음과 같다.
