JDK는 Java Development Kit의 약자로 자바 개발도구이다.
즉, 자바로 프로그램을 만들때 필요한 툴들을 모아놓은 소프트웨어 패키지이다.
JDK 를 설치하면, 아래의 사진처럼 자바 프로그램을 실행하기 위한 JRE(자바 실행환경) 와 자바 프로그램 개발을 위한 Development Tools 가 설치된다.
⭐🌟💫✨
JRE는 Java Runtime Environment의 약자로 자바 실행환경이다.
JRE 에는 자바 프로그램을 실행하기 위한 JVM(자바 가상 머신) 과 자바 프로그램을 실행시킬때 필요한 라이브러리 파일(자바 API) 들을 가지고 있다. 이외에도 자바 런타임 환경에서 사용하는 프로퍼티 세팅 이나 리소스 파일(jar 파일) 들이 있다.
즉, JRE 는 JVM 의 실행환경을 구현했다고 할 수 있다. JVM 에 대해서는 잠시후에 자세히 설명하겠다.
이처럼 자바로 만든 프로그램을 실행만 하고 싶다면
JRE만을 필요로 하지만 자바로 프로그램을 개발하고 싶다면JDK를 필요로 한다.
예전에는 JRE 만 따로 설치할 수 있었지만, JDK 11 부터는 따로 설치할 수 없다. JRE 만 필요로 하더라도 JDK 를 설치해야한다.
JDK를 설치하기전에JDK의 버전에 대해 알아보자.
초기 버전인 1.0 / 1.1 버전에서는 JDK 1.0 / JDK 1.1 이런식으로 버전 표기를 사용했지만, JDK 1.2 를 발표하면서 J2SE(Java2 Standard Edition) 로 변경하게 된다. 그리고 J2SE 라는 명칭 또한, 2006년 JDK 1.6 부터 Java SE(Java Standard Edition) 로 변경된다.
위에서는 JDK 의 이름이 Java SE 로 바뀐것처럼 설명했지만 조금더 자세히 설명하며 JDK 를 다운받음으로써 Java SE 라는 플랫폼을 구축하는 것이다. 이러한 플랫폼에는 Java SE 말고도 Java EE, Java ME, JavaFX 도 있고 각각 다른 버전들을 가지고 있다. 플랫폼 에 대한 설명은 아래와 같다.
Java 플랫폼이란Java 애플리케이션을 개발 및 관리하기 위한 환경
여러 Java 플랫폼 이 등장하게 된 이유는 간단하다. Java 로 만들 수 있는 프로그램의 유형에 따라 플랫폼을 구분한 것이다.
Java 플랫폼 의 종류에 대해서 간단히 알아보자.
Java 프로그래밍 언어의 핵심 기능을 제공하는 플랫폼Java SE 위에 구축되며 서버 개발을 위한 다양한 다양한 기술들을 제공하는 플랫폼JAVA SE 를 줄여 라이트하게 만든 플랫폼GUI(그래픽 사용자 인터페이스) 를 제공하는 플랫폼
JDK를 설치하면 아래와 같이 여러 디렉토리 들이 설치된다.
필자는 Java SE 17 을 다운로드 받았으며 편의상 폴더이름을 jdk17로 변경하였다. 설치 방법에 대한 설명은 생략하겠다. 위의 디렉토리들에 대한 설명은 아래의 표와 같다.
| 디렉토리 | 설명 |
|---|---|
| bin | 자바 개발, 실행에 필요한 도구와 유틸리티 명령 |
| conf | 여러 종류의 배치파일 |
| include | 네이티브 코드 프로그래밍에 필요한 C언어 헤더 |
| jmods | 컴파일된 모듈 파일들 |
| legal | 각 모듈에 대한 저작권과 라이선스 파일 |
| lib | 실행 시간에 필요한 라이브러리 클래스 |
위의 디렉토리 중에서 bin 디렉토리에 들어있는 주요 개발 소프트웨어는 아래의 표와 같다.
| 소프트웨어 | 설명 |
|---|---|
| javac | 자바 컴파일러로 자바 소스를 바이트 코드로 변환 |
| java | 자바 프로그램 실행기. JVM을 작동시켜 자바 프로그램 실행 |
| include | 네이티브 코드 프로그래밍에 필요한 C언어 헤더 파일 |
| javadoc | 자바 소스로부터 HTML 형식의 API 도규먼트 생성 |
| jar | 자바 클래스 파일을 압축한 자바 아카이브 파일(.jar) 생성, 관리 |
| jmod | 자바의 모듈 파일을 만들거나 모듈 파일의 내용 출력 |
| javadoc | 응용프로그램에 맞춘 맞춤형 JRE 생성 |
| jdb | 응용프로그램의 실행 중 오류를 찾는데 사용하는 디버거 |
| javap | 클래스 파일의 바이트 코드를 소스와 함께 보여주는 디어셈블러 |
JVM이란 Java Virtual Machine의 약자로 자바 가상머신이다.
쉽게 말하면, 자바를 돌리는 프로세서이다. 자바로 작성된 모든 프로그램은 JVM 에서만 실행될 수 있다. 즉, 자바 프로그램을 실행하기 위해서는 반드시 JVM 이 필요하다.
위와 같이
Java는OS에 종속적이지 않고JVM은OS에 종속적이다.
자바 로 작성된 소스파일은 직접 OS 로 가서 실행되는 것이 아니라 JVM 을 거쳐서 OS 와 상호작용을 한다. 즉, OS 에 알맞는 JVM 을 설치하기만 하면, Java 로 작성된 소스파일은 OS 에 관계없이 똑같이 실행된다. 예시는 아래의 사진과 같다.
하지만, 위와 같이 장점만 있는것은 아니다.
자바 프로그램은 다른 언어로 작성된 프로그램과 달리 JVM 을 한 단계 더 거쳐야 하므로, 결국은 상대적으로 실행속도가 느리다는 단점이 있다. 즉, 자바 는 두번의 컴파일로 인한 속도의 문제가 발생하는데 이를 보완하기 위해 JIT 컴파일러 라는 내부 프로그램을 사용하기 시작했다.
JIT 컴파일 방식은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법이다. 기존의 자바는 인터프리팅 방식으로 명령어를 하나씩 실행하게끔 이루저여 있었다. 하지만, JIT 컴파일 방식도 사용하면서 같은 코드를 매번 해석하지 않는다.
자바는 인터프리터 와 JIT 컴파일러 둘 다 사용한다. JIT 컴파일러 에 대해 자세한 내용은 CH4. JVM 구조와 동작방식 를 참고하자. JVM 의 구조와 JVM 이 어떻게 자바 프로그램을 실행시켜주는지 자세히 설명해준다.
자바의 정석 기초편 - 남궁성 지음
JDK / JRE / JVM 개념 & 구성 원리 💯 총정리
[공부/Java] JVM, JRE, JDK
자바 JDK, JRE, JVM의 차이
알아두면 쓸데없는 자바 플랫폼 종류
JVM의 메모리 구조
java는 운영체제에 독립적이라면서, 왜 설치할 때에는 운영체제에 맞춰서 설치해야 할까?