자바 개발 키트
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
자바 개발 키트(JDK)는 자바 애플리케이션 개발을 위한 소프트웨어 개발 키트(SDK)의 일종으로, 자바 런타임 환경(JRE)을 포함하며 자바 가상 머신(JVM)과 클래스 라이브러리, 개발에 필요한 다양한 도구 및 유틸리티를 제공한다. JDK는 컴파일러, 디버거, 문서 생성기 등 다양한 도구를 포함하며, 파일 구성은 실행 파일, 구성 파일, C 헤더 파일, 자바 모듈, 저작권 및 라이선스, 추가 라이브러리로 이루어져 있다. 징(Zing), 줄루(Zulu), IcedTea, 자메이카VM, IBM J9 등 다양한 JDK가 존재하며, 아파치 하모니, 애플의 Mac OS 런타임 포 자바, 블랙다운 자바, GNU Classpath, JRockit 등은 현재 유지 관리되지 않거나 중단되었다.
더 읽어볼만한 페이지
- 자바 (프로그래밍 언어) - 자바 애플릿
자바 애플릿은 웹 페이지에서 실행되는 자바 기반 프로그램으로, 웹 상호작용성을 높였으나 기술적 문제와 웹 표준 기술 발전에 따라 쇠퇴하여 사용이 중단되었다. - 자바 (프로그래밍 언어) - 자바FX
JavaFX는 자바 기반의 UI 구축 플랫폼으로, 다양한 플랫폼을 지원하며 풍부한 UI 기능들을 제공하고, Java 8부터 JDK에 포함되었다가 JDK 11부터 분리되어 관리된다. - 소프트웨어 개발 키트 - 퀵타임
퀵타임은 1991년 애플에서 처음 출시된 멀티미디어 프레임워크로, 다양한 기능 업데이트를 거치며 발전했으나 애플의 소극적인 지원으로 쇠퇴하였고, 비디오 및 오디오 트랜스코딩, 코덱 지원 등의 특징을 가지며 퀵타임 플레이어를 통해 다양한 파일 형식을 재생할 수 있도록 지원했으나, 2016년 4월 윈도우 버전 지원이 중단되었다. - 소프트웨어 개발 키트 - 넷빈즈
넷빈즈는 1996년 자바 IDE 학생 프로젝트로 시작되어 썬 마이크로시스템즈를 거쳐 아파치 소프트웨어 재단에 기증된 오픈 소스 통합 개발 환경(IDE)으로, 다양한 언어를 지원하고 GUI 디자인 도구, 프로파일러 등 기능을 제공하며 자바 VM 운영체제에서 동작한다. - 썬 마이크로시스템즈 소프트웨어 - 자바 데스크톱 시스템
- 썬 마이크로시스템즈 소프트웨어 - 핫자바
핫자바는 자바 프로그래밍 언어 기반으로 개발된 웹 브라우저이며, 1995년 TED 컨퍼런스에서 처음 시연되고 SunWorld 컨퍼런스에서 공식 발표되었다.
| 자바 개발 키트 - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발자 | 오라클 (선 마이크로시스템즈) |
| 장르 | 소프트웨어 개발 키트 |
| 라이선스 | 선 라이선스 (대부분 GPL 기반) |
| 웹사이트 | 오라클 |
| 최신 릴리스 정보 | |
| 최신 버전 | 23.0.1 |
| 최신 릴리스 날짜 | 2024년 10월 15일 |
| 기타 정보 | |
| 운영 체제 | 크로스 플랫폼 |
| 프로그래밍 언어 | 해당 사항 없음 |
2. 구성
자바 실행 환경(JRE), 컴파일러, 디버거, 문서 생성 도구 등 다양한 개발 도구를 포함한다. JDK는 크게 실행 파일, 구성 파일, C 헤더 파일, 자바 모듈, 저작권 및 라이선스, 추가 라이브러리의 6가지 파일로 구성되어 있으며, 핵심 개발 도구들은 다음과 같다.
| 도구 종류 | 설명 |
|---|---|
| 컴파일러 및 실행 도구 | javac, java 등 |
| 문서화 및 디버깅 도구 | javadoc, jdb, jhat, jinfo, jmap, jstack 등 |
| 모니터링 및 관리 도구 | JConsole, jps, jstat, jstatd, VisualVM, keytool 등 |
| 기타 도구 | appletviewer, apt, extcheck, idlj, javah, javap, javaws, jar, jrunscript, pack200, policytool, wsimport, xjc 등 |
이 외에도 JDK에는 실험적인 도구들이 포함되어 있으며, 이러한 도구들은 향후 버전에서 제공되지 않을 수도 있다. 또한, JDK는 자바 가상 머신(JVM)과 개발자에게 유용한 추가 라이브러리들을 포함하는 완전한 자바 런타임 환경(JRE)을 포함하고 있다.
2. 1. 파일 구성
JDK는 실행 파일, 구성 파일, C 헤더 파일, 자바 모듈, 저작권 및 라이선스, 추가 라이브러리 등으로 구성된다.- '''실행 파일 (bin/)''' : 자바 실행 환경(JRE)을 구현한 것이다. JRE는 자바 가상 머신, 클래스 라이브러리, 자바 언어 프로그램 작동에 필요한 파일을 포함하며, 프로그램 개발에 필요한 툴과 유틸리티도 같은 위치에 있다.
- '''구성 파일 (conf/)''' : 사용자 구성 옵션을 포함하는 파일들로, JDK 접근 권한 설정, 보안 알고리즘 변경, 자바 암호화 확장 정책 등을 설정할 수 있다.
- '''C 헤더 파일 (include/)''' : 자바 가상 머신 디버거 인터페이스와 자바 네이티브 인터페이스의 네이티브 코드를 작성하는 데 사용되는 C 헤더 파일이다.
- '''자바 모듈 (jmods/)''' : `jlink`를 이용하여 사용자 지정 런타임을 만드는 데 사용되는 모듈이다.
- '''저작권 및 라이선스 (legal/)''' : 각 모듈에 대한 라이선스와 저작권 정보, 제삼자 제공 정보가 들어있다.
- '''추가 라이브러리 (lib/)''' : JDK에 필요한 추가 클래스 라이브러리와 지원 파일이 들어있다. (외부 사용 목적은 아니다.)
각 파일에 대한 더 자세한 내용은 하위 섹션에서 확인할 수 있다.
2. 1. 1. 실행 파일 (bin/)
JDK의 `bin/` 디렉터리에는 자바 실행 환경(JRE) 구현체와 다음과 같은 개발 도구들이 포함되어 있다.- `appletviewer`: 웹 브라우저 없이 자바 애플릿을 실행하고 디버깅하는 데 사용된다.
- `apt`: 주석 처리 도구이다.[2]
- `extcheck`: JAR 파일 충돌을 감지하는 유틸리티이다.
- `idlj`: IDL-to-Java 컴파일러로, 주어진 Java IDL 파일에서 Java 바인딩을 생성한다.
- `jabswitch`: Java Access Bridge로, Microsoft Windows 시스템에서 보조 기술을 지원한다.
- `java`: Java 애플리케이션용 로더이다. 이 도구는 인터프리터이며 javac 컴파일러에서 생성된 클래스 파일을 해석한다. 개발과 배포 모두에 단일 런처가 사용된다. 이전 배포 런처인 `jre`는 더 이상 제공되지 않고, 새로운 `java` 로더로 대체되었다.
- javac: Java 컴파일러로, 소스 코드를 Java 바이트 코드로 변환한다.
- javadoc: 문서 생성기로, 소스 코드 주석에서 자동으로 문서를 생성한다.
- jar: 아카이버로, 관련 클래스 라이브러리를 단일 JAR 파일로 패키징한다. JAR 파일 관리도 지원한다.
- `javafxpackager`: JavaFX 애플리케이션을 패키징하고 서명하는 도구이다.
- `jarsigner`: jar 서명 및 검증 도구이다.
- `javah`: 네이티브 메서드를 작성하는 데 사용되는 C 헤더 및 스텁 생성기이다.
- `javap`: 클래스 파일 역어셈블러이다.
- `javaws`: JNLP 애플리케이션용 Java Web Start 런처이다.
- JConsole: Java 모니터링 및 관리 콘솔이다.
- `jdb`: 디버거이다.
- `jhat`: Java 힙 분석 도구이다. (실험적)
- `jinfo`: 실행 중인 Java 프로세스 또는 크래시 덤프에서 구성 정보를 가져온다. (실험적)
- `jmap`: Java 메모리 맵을 출력하고, 주어진 프로세스 또는 코어 덤프의 공유 객체 메모리 맵 또는 힙 메모리 세부 정보를 인쇄한다. (실험적)
- `jmc`: Java 미션 컨트롤이다.
- `jpackage`: 자체 포함 애플리케이션 번들을 생성하는 도구이다. (실험적)
- `jps`: Java 가상 머신 프로세스 상태 도구로, 대상 시스템에서 계측된 HotSpot Java 가상 머신(JVM)을 나열한다. (실험적)
- `jrunscript`: Java 명령줄 셸 스크립트 셸이다.
- jshell: Java 9에 도입된 read–eval–print loop이다.
- `jstack`: Java 스레드의 Java 스택 추적을 인쇄하는 유틸리티이다. (실험적)
- `jstat`: Java 가상 머신 통계 모니터링 도구이다. (실험적)
- `jstatd`: jstat 데몬이다. (실험적)
- keytool: 키 저장소를 조작하는 도구이다.
- pack200: JAR 압축 도구이다.
- `policytool`: Java 런타임에 대한 정책을 결정하고, 다양한 소스의 코드에 사용할 수 있는 권한을 지정하는 정책 생성 및 관리 도구이다.
- VisualVM: 여러 명령줄 JDK 도구와 경량 성능 및 메모리 프로파일링 기능을 통합하는 시각적 도구이다. (JDK 9+에 더 이상 포함되지 않음)
- `wsimport`: 웹 서비스를 호출하기 위한 이식 가능한 JAX-WS 아티팩트를 생성한다.
- `xjc`: XML 바인딩용 Java API(JAXB) API의 일부로, XML 스키마를 받아 Java 클래스를 생성한다.
실험적인 도구는 향후 JDK 버전에서 사용 불가능할 수 있다.
JDK에는 "private" 런타임이라고 불리는 완전한 Java 런타임 환경(JRE)도 포함되어 있다. 여기에는 Java 가상 머신, 프로덕션 환경에 있는 모든 클래스 라이브러리, 그리고 개발자에게만 유용한 국제화 및 현지화 라이브러리 및 인터페이스 설명 언어 라이브러리 등이 포함된다.
2. 1. 2. 구성 파일 (conf/)
JDK의 `conf/` 디렉터리는 접근 권한, 보안 알고리즘, 암호화 확장 정책 등을 설정하는 파일들을 포함하고 있다.[2] 이 디렉터리의 파일들은 policytool을 통해 관리될 수 있으며, Java 런타임에 대한 정책을 결정하고 다양한 소스의 코드에 대한 권한을 지정하는 데 사용된다.2. 1. 3. C 헤더 파일 (include/)
javah는 네이티브 메서드를 작성하는 데 사용되는 C 헤더 및 스텁 생성기이다.[2]2. 1. 4. 자바 모듈 (jmods/)
(요약에 해당하는 내용이 원본 소스에 없으므로, 섹션 제목에 해당하는 내용을 원본에서 찾아서 작성합니다.)섹션 제목이 '자바 모듈 (jmods/)'에 대한 내용이 원본 소스에 명시적으로 존재하지 않습니다. 따라서 주어진 원본 소스 내에서 '모듈'과 관련된 내용을 찾을 수 없습니다. 이 경우, 섹션 내용을 작성할 수 없습니다.
2. 1. 5. 저작권 및 라이선스 (legal/)
JDK에는 각 모듈의 라이선스 및 저작권 정보, 제삼자 제공 정보가 명시적으로 포함되어 있지 않다.2. 1. 6. 추가 라이브러리 (lib/)
JDK는 개발자를 위한 추가 클래스 라이브러리 및 지원 파일을 포함하고 있으며, 이는 외부 사용 목적이 아니다.2. 2. 주요 개발 도구
JDK는 자바 개발을 위한 핵심 도구들을 포함하고 있다. 주요 도구들은 다음과 같이 분류할 수 있다.| 도구 종류 | 설명 |
|---|---|
| 컴파일러 및 실행 도구 | javac, java 등 |
| 문서화 및 디버깅 도구 | javadoc, jdb, jhat, jinfo, jmap, jstack 등 |
| 모니터링 및 관리 도구 | JConsole, jps, jstat, jstatd, VisualVM, keytool 등 |
| 기타 도구 | appletviewer, apt, extcheck, idlj, javah, javap, javaws, jar, jrunscript, pack200, policytool, wsimport, xjc 등 |
이 외에도 JDK에는 실험적인 도구들이 포함되어 있으며, 이러한 도구들은 향후 버전에서 제공되지 않을 수도 있다. 또한, JDK는 자바 가상 머신(JVM)과 개발자에게 유용한 추가 라이브러리들을 포함하는 완전한 자바 런타임 환경(JRE)을 포함하고 있다.
2. 2. 1. 컴파일러 및 실행 도구
javac는 Java 컴파일러로, 소스 코드를 Java 바이트 코드로 변환한다.[2] java는 Java 애플리케이션용 로더이다. 이 도구는 인터프리터이며, javac 컴파일러에 의해 생성된 클래스 파일을 해석하고 실행한다. 현재 하나의 런처가 개발과 배포에 모두 사용되며, 이전 배포 런처인 jre는 더 이상 포함되지 않고 새로운 java 로더로 대체되었다.2. 2. 2. 문서화 및 디버깅 도구
- javadoc – 소스 코드 주석에서 자동으로 문서를 생성한다.[2]
- jdb – 디버거
- jhat – Java 힙 분석 도구 (실험적)
- jinfo – 실행 중인 Java 프로세스 또는 크래시 덤프에서 구성 정보를 가져온다. (실험적)
- jmap – 프로세스나 코어 덤프 파일에서 공유 객체 메모리 맵이나 힙 메모리 정보를 보여준다. (실험적)
- jstack – Java 스레드의 스택 추적을 보여주는 유틸리티 (실험적)
2. 2. 3. 모니터링 및 관리 도구
- JConsole - Java 모니터링 및 관리 콘솔이다.[2]
- jps - Java 가상 머신 프로세스 상태 도구로, 대상 시스템에서 계측된 HotSpot Java 가상 머신(JVM)을 나열한다. (실험적 기능)[2]
- jstat - Java 가상 머신 통계 모니터링 도구이다. (실험적 기능)[2]
- jstatd - jstat용 데몬이다. (실험적 기능)[2]
- VisualVM - 여러 명령 줄 도구에 대한 시각적 UI를 제공하고, 성능 및 메모리 프로파일링 기능을 포함한다.[2]
- keytool - 키스토어 관리 도구이다.[2]
2. 2. 4. 기타 도구
- 애플릿 뷰어 - 웹 브라우저 없이 자바 애플릿을 실행하고 디버깅하는 데 사용되는 도구이다.[2]
- apt - 주석 처리 도구이다.[2]
- extcheck - JAR 파일 충돌을 감지하는 유틸리티이다.
- idlj - IDL-to-Java 컴파일러. 주어진 Java IDL 파일에서 Java 바인딩을 생성한다.
- javah - 네이티브 메서드를 작성하는 데 사용되는 C 헤더 및 스텁 생성기이다.
- javap - 클래스 파일 역어셈블러이다.
- javaws - JNLP 애플리케이션용 Java Web Start 런처이다.
- jar - 관련 클래스 라이브러리를 단일 JAR 파일로 패키징하는 아카이버이다. 이 도구는 JAR 파일 관리에도 사용된다.
- jrunscript - Java 명령줄 셸 스크립트 셸이다.
- pack200 - JAR 압축 도구이다.
- policytool - Java 런타임에 대한 정책을 결정하고, 다양한 소스의 코드에 사용할 수 있는 권한을 지정할 수 있는 정책 생성 및 관리 도구이다.
- wsimport - 웹 서비스를 호출하기 위한 이식 가능한 JAX-WS 아티팩트를 생성한다.
- xjc - XML 바인딩용 Java API(JAXB) API의 일부. XML 스키마를 받아 Java 클래스를 생성한다.
3. 다양한 JDK
오라클 JDK 외에도 다양한 JDK가 존재하며, 각기 다른 특징을 가진다. 이들은 모두 기본적인 Java 사양을 준수하지만, 가비지 수집, 컴파일 전략 및 최적화 기술과 같이 명시적으로 지정되지 않은 영역에서 종종 다르다.
대표적인 JDK로는 아줄 시스템즈의 징(Zing)과 줄루(Zulu), OpenJDK / IcedTea, 아이카스(Aicas)의 자메이카VM, IBM J9 등이 있다. 징(Zing)은 아줄 시스템즈에서 개발한 리눅스용 저지연 JDK이며[3], 줄루(Zulu)는 아줄 시스템즈와 OpenJDK 기반으로 Linux, Windows, Mac OS X, 임베디드 및 클라우드용으로 개발되었다.[4] IBM J9는 IBM에서 개발한 JDK로, AIX, Linux, Windows, MVS, OS/400, Pocket PC, z/OS 등 다양한 플랫폼을 지원한다.[5]
아파치 하모니, 애플의 클래식 Mac OS용 Mac OS 런타임 포 자바 JVM/JDK, 블랙다운 자바, GNU의 GNU Classpath 및 GCJ, 오라클의 JRockit 등은 현재 유지 관리되지 않거나 중단되었다.
3. 1. 주요 JDK 목록
| JDK | 설명 | 비고 |
|---|---|---|
| Azul 징(Zing) | 아줄 시스템즈에서 개발한, 리눅스용 저지연 JDK[3] | 개발 중 |
| Azul 줄루(Zulu) | 아줄 시스템즈와 OpenJDK 기반으로 Linux, Windows, Mac OS X, 임베디드 및 클라우드용으로 개발[4] | 개발 중 |
| OpenJDK / IcedTea | OpenJDK를 기반으로 한 배포판 | 개발 중 |
| 자메이카VM (JamaicaVM) | 아이카스(Aicas)에서 개발한 실시간 시스템을 위한 JDK | 개발 중 |
| IBM J9 | IBM에서 개발한 JDK로, AIX, Linux, Windows, MVS, OS/400, Pocket PC, z/OS 등 다양한 플랫폼을 지원[5][19] | 개발 중 |
| 아파치 하모니 | 아파치 재단에서 개발한 JDK | 유지 관리 중단 |
| 애플의 클래식 Mac OS용 Mac OS 런타임 포 자바 JVM/JDK | 애플에서 클래식 Mac OS용으로 개발[6][21] | 유지 관리 중단 |
| 블랙다운 자바 (Blackdown Java) | Sun의 JDK를 리눅스로 포팅[7][8][22][23] | 유지 관리 중단 |
| GNU의 Classpath 및 GCJ | GNU 프로젝트의 GNU Classpath, GNU Interpreter for Java(GIJ) 및 GNU Compiler for Java(GCJ) | 개발 중 |
| 오라클 (Oracle Corporation)의 JRockit JDK | 오라클에서 Windows, Linux 및 Solaris용으로 개발[9][20] | 개발 중 |
3. 2. 단종되거나 유지 관리되지 않는 JDK
4. JDK와 SDK의 관계
JDK는 소프트웨어 개발 키트(SDK)의 하위 집합이다. 오라클은 자바 SE 개발 키트를 지칭할 때 JDK라는 용어를 사용할 것을 권장한다.[17] 자바 SE SDK는 JDK와 함께 사용하거나 JDK 없이도 사용할 수 있으며, 특히 자바 SE 7 JDK를 의미한다.[18]
참조
[1]
웹사이트
OpenJDK FAQ
https://openjdk.java[...]
OpenJDK
2021-10-23
[2]
웹사이트
JDK 5.0 Java Annotation Processing Tool (APT)-related APIs & Developer Guides -- from Sun Microsystems
http://download.orac[...]
2012-08-05
[3]
웹사이트
Azul Zing product page
http://www.azulsyste[...]
[4]
웹사이트
Azul Zulu download page
http://www.azulsyste[...]
[5]
웹사이트
developerWorks : IBM developer kits : Downloads
http://www-128.ibm.c[...]
2012-08-05
[6]
웹사이트
Support at Apple
http://docs.info.app[...]
[7]
웹사이트
Java Linux Contact Information
http://www.blackdown[...]
2012-08-05
[8]
웹사이트
Java-Linux Latest Information
http://www.blackdown[...]
2012-08-05
[9]
웹사이트
JRockit Family Download page
http://www.oracle.co[...]
2012-08-05
[10]
문서
Java SE Development Kit 13- - Downloads
https://www.oracle.c[...]
[11]
문서
Java SE Development Kit 11- - Downloads
https://www.oracle.c[...]
[12]
블로그
Update on Oracle Java on Oracle Solaris | Oracle Solaris Blog
https://blogs.oracle[...]
[13]
문서
Java EE - Downloads: GlassFish and Java EE 8 | Oracle Technology Network | Oracle
https://www.oracle.c[...]
[14]
문서
Java ME SDK
https://www.oracle.c[...]
[15]
웹사이트
Sun's May 8th announcement of source code for JDK
http://www.prnewswir[...]
2013-07-10
[16]
웹사이트
JDK 5.0 Java Annotation Processing Tool (APT)-related APIs & Developer Guides -- from Sun Microsystems
http://download.orac[...]
2012-08-05
[17]
웹사이트
Java SE Downloads
http://www.oracle.co[...]
Oracle
2013-07-10
[18]
웹사이트
Java Platform, Enterprise Edition 7 SDK - Installation Instructions
http://www.oracle.co[...]
Oracle
2013-07-10
[19]
웹사이트
developerWorks : IBM developer kits : Downloads
http://www-128.ibm.c[...]
2012-08-05
[20]
웹사이트
JRockit Family Download page
http://www.oracle.co[...]
2012-08-05
[21]
웹사이트
Support at Apple
http://docs.info.app[...]
2013-07-10
[22]
웹사이트
Java Linux Contact Information
http://www.blackdown[...]
2012-08-05
[23]
웹사이트
Java-Linux Latest Information
http://www.blackdown[...]
2012-08-05
[24]
웹인용
Release notes
https://jdk.java.net[...]
Oracle Corporation
2024-03-19
[25]
웹인용
Oracle No-Fee Terms and Conditions License
https://www.oracle.c[...]
Oracle Corporation
2021-10-23
[26]
웹인용
Licensing Information User Manual
https://www.oracle.c[...]
Oracle Corporation
2021-10-23
[27]
웹인용
Java SE 7 Features and Enhancements
http://www.oracle.co[...]
Oracle Corporation
2013-01-01
[28]
웹인용
Sun's May 8th announcement of source code for JDK
http://www.prnewswir[...]
2019-12-13
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
