자바 개발 키트

**자바 개발 키트**(, JDK)는 자바 SE, 자바 EE, 또는 자바 ME 플랫폼 중 하나를 구현한 것으로 솔라리스, 리눅스, 맥 OS X, 또는 윈도우 자바 개발자를 대상으로 오라클에 의해 바이너리 제품으로 제공된다. 자바 플랫폼의 등장 이래 지금까지 가장 널리 사용되는 소프트웨어 개발 키트(SDK)다. 2006년 11월 17일 썬은 GNU 일반 공중 사용 허가서 (GPL)하에 출시될 것이라고 발표했고, 이에 따라 자유 소프트웨어가 되었다. 이는 썬이 2007년 5월 8일 소스 코드를 오픈 JDK에 기부함에 따라 이루어졌다.

오라클 자바 테크놀로지가 제공하는 자바 개발 키트(Java™ Platform, Standard Edition Development Kit (JDK™))는 자바 어플리케이션을 위한 자바 언어 스펙(JLS), 자바 가상 머신 스펙 (JVMS)을 구현하고 있으며, 자바의 표준 에디션(SE)을 제공한다. 또한 컴파일러, 디버깅, 테스팅, 모니터링, 문서화작업, 자바 라이브러리 등 자바 플랫폼에서 운영되는 소프트웨어 개발에 필요한 모든 것들을 포함하고 있다.

오라클이 현재 배포하는 자바 개발 키트는 최신버젼으로 JDK 20, 장기지원버젼으로 JDK 17 (2024년 9월까지 업데이트보장됨)가 있으며, 무료 사용 및 재배포가 가능한 No-Fee Terms and Conditions (NFTC)[3 https://www.oracle.com/downloads/licenses/no-fee-license.html] 라이선스로 윈도즈와 리눅스 환경으로 x64 바이너리 아키텍쳐를, 맥 OS와 리눅스를 대상으로 aarch64 바이너리 아키텍쳐를 제공한다.

## 구성
JDK는 크게 6 가지 파일들로 구성되어 있으며, 파일 위치와 구성은 다음과 같다.

* **실행 파일 (bin/)**: 자바 실행 환경 (Java Runtime Environment, JRE)을 구현한 것으로, JRE는 자바 가상머신, 클래스 라이브러리, 자바 언어로 작성된 프로그램 작동에 필요한 파일을 포함하고 있으며, 같은 위치에 프로그램 개발에 필요한 모든 툴과 유틸리티도 포함되어 있다.
* **구성 파일 (conf/)**: 사용자 구성 옵션을 포함하고 있는 파일들로써, JDK 접근 권한 설정, 보안 알고리즘 변경, 자바 암호화 확장 정책 등을 설정할 수 있다.
* **C 헤더 파일 (include/)**: 자바 가상머신 디버거인터페이스와 자바네이티브인터페이스의 네이티브 코드를 작성하는데 사용되는 C헤더 파일
* **자바 모듈 (jmods/)**: jlink를 이용하여 사용자 지정 런타임을 만드는데 사용되는 모듈.
* **저작권 및 라이선스 (legal/ )**: 각 모듈에 대한 라이선스와 저작권에 대한 내용, 제삼자 제공 포함.
* **추가 라이브러리 (lib/ )**: JDK에 필요한 추가 클라스 라이브러리와 지원 파일 (외부 사용을 목적으로 하지 않음).

JDK의 핵심을 이루는 개발 툴들은 다음과 같다:
* appletviewer - 웹브라우저 없이 자바 애플릿을 실행하고 디버깅하기 위한 툴
* apt - 애너테이션 처리 툴
* extcheck - JAR 파일 충돌을 감지하는 툴
* idlj - IDL을 자바로 컴파일 해주는 툴. 주어진 자바 IDL 파일에 대한 자바 바인딩을 만들어 준다.
* java - 자바 응용 프로그램 로더. javac 컴파일러가 만든 클래스 파일을 해석 및 실행한다. 현재는 하나의 런처가 개발 및 배포에 동일하게 사용된다. 예전에 사용되던 배포용 런처 jre는 더 이상 Sun JDK에서는 제공되지 않고, 이 로더로 대체되었다.
* javac - 자바 컴파일러. 자바 소스 파일을 바이트코드로 변환해준다.
* javadoc - 소스 코드 주석으로부터 자동으로 문서를 생성해주는 툴
* jar - 서로 관련있는 클래스 라이브러리들과 리소스들을 하나의 JAR 파일로 묶어주는 툴. Jar 파일을 관리하는데도 사용된다.
* javah - 네이티브 코드를 작성하는데 사용되는 C 헤더 및 스텁 생성기
* javap - 클래스 파일을 자바 소스 코드로 디스어셈블해주는 도구
* javaws - JNLP 응용 프로그램용 자바 웹 스타트 런처
* JConsole - 자바 모니터링 및 관리 콘솔
* jdb - 자바 디버깅 툴
* jhat - 자바 힙 분석 툴 (실험적인 기능)
* jinfo - 현재 실행중인 자바 프로세스나 크래쉬 덤프로부터 구성정보를 읽어들이는 툴 (실험적인 기능)
* jmap - 현재 실행중인 프로세스나 코어 덤프 파일로부터 공유 객체 메모리 맵이나 힙 메모리 정보를 보여주는 툴 (실험적인 기능)
* jps - 자바 가상 머신 프로세스 상태(Java Virtual Machine Process Status) 툴. 대상 시스템의 인스트루먼트 가능한 핫스팟 자바 가상 머신들의 목록을 보여준다. (실험적인 기능)
* jrunscript - 자바 명령 줄 스크립트용 셀
* jstack - 자바 쓰레드들의 스텍 트레이스를 보여주는 툴 (실험적인 기능)
* jstat - 자바 가상 머신 통계 모니터링 툴 (실험적인 기능)
* jstatd - jstat용 데몬 (실험적인 기능)
* keytool - 키스토어 관리용 툴
* pack200 - JAR 압축 툴
* policytool - 자바 실행 정책을 만들거나 관리하는 툴. 자바 실행시 다양한 곳으로부터 온 개개의 코드에 권한을 주거나 제한할 수 있다.
* VisualVM - 여러 자바 명령 줄 툴들에 대한 비주얼 UI를 제공해주고, 간단한 성능 및 메모리 프로파일링 기능을 포함한다.
* wsimport - 웹 서비스를 호출하기 위한 JAX-WS 아티팩트를 만들어준다.
* xjc - XML 바인딩용 자바 API(Java API for XML Binding, JAXB)의 일부. 주어진 XML 스키마에 대한 자바 클래스를 만들어준다.

현재 실험적인 기능인 툴들은 향후 버전의 JDK에서는 제공되지 않을 수도 있다.

JDK에는 또한 자바 실행 환경(Java Runtime Environment, JRE)이 포함된다. 이 JRE는 자바 가상 머신(Java Virtual Machine, JVM)과 프로덕션 환경에서 제공되는 모든 클래스 라이브러리 및 국제화나 IDL 라이브러리와 같이 개발자들에게 도움이 되는 라이브러리들로 구성된다.

그리고 자바 API의 거의 모든 부분들을 커버하는 다양한 예제 프로그램들이 JDK와 함께 제공된다.

## 같이 보기
* 자바 플랫폼
* 클래스패스
* 자바 버전 역사

## 각주

## 외부 링크
* Oracle Java SE
* Oracle Java SE Support Roadmap

분류:자바 (프로그래밍 언어)
분류:오라클 소프트웨어
분류:썬 마이크로시스템즈 소프트웨어
분류:소프트웨어 개발 키트