자바 개발 키트
| 개발자 | 오라클 |
|---|---|
| 안정화 버전 | 24.0.2
/ 2025년 7월 15일[1] |
| 저장소 |
|
| 엔진 | |
| 운영 체제 | 크로스 플랫폼 |
| 종류 | 소프트웨어 개발 키트 |
| 라이선스 | Oracle No-Fee Terms and Conditions (NFTC)[2] with third party components[3] |
| 웹사이트 | oracle.com/java/technologies/ |
자바 개발 키트(Java Development Kit, JDK)는 자바 SE, 자바 EE, 또는 자바 ME 플랫폼 중 하나를 구현한 것으로[4] 솔라리스, 리눅스, 맥 OS X, 또는 윈도우 자바 개발자를 대상으로 오라클에 의해 바이너리 제품으로 제공된다. 자바 플랫폼의 등장 이래 지금까지 가장 널리 사용되는 소프트웨어 개발 키트(SDK)다. 2006년 11월 17일 썬은 GNU 일반 공중 사용 허가서 (GPL)하에 출시될 것이라고 발표했고, 이에 따라 자유 소프트웨어가 되었다. 이는 썬이 2007년 5월 8일 소스 코드를 오픈 JDK에 기부함에 따라 이루어졌다.[5]
오라클 자바 테크놀로지가 제공하는 자바 개발 키트(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와 함께 제공된다.
같이 보기
각주
- ↑ “Consolidated JDK 24 Release Notes”. Oracle Corporation. 7 sep 2025에 확인함.
- ↑ “Oracle No-Fee Terms and Conditions License”. Oracle Corporation. 2021년 10월 23일에 확인함.
- ↑ “Licensing Information User Manual” (PDF). Oracle Corporation. 2021년 10월 23일에 확인함.
- ↑ “Java SE 7 Features and Enhancements”. Oracle Corporation. 2013년 1월 1일에 확인함.
- ↑ “Sun's May 8th announcement of source code for JDK”. 2012년 9월 12일에 원본 문서에서 보존된 문서. 2019년 12월 13일에 확인함.
외부 링크
- 스크립트 오류가 있는 문서
- 인용 오류 - 날짜
- 영어 표기를 포함한 문서
- 잘못된 파일 링크가 포함된 문서
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 자바 (프로그래밍 언어)
- 오라클 소프트웨어
- 썬 마이크로시스템즈 소프트웨어
- 소프트웨어 개발 키트