Java Development Kit

**Java Development Kit** (**JDK**) は、プログラミング言語Javaを使ってJavaアプリケーションおよびその他のソフトウェアコンポーネントを構築するためのソフトウェア開発キット (SDK) および開発環境である。現在、活発に開発されているのは OpenJDK およびそのフォークであり、2018年9月の Java 11 以降はソースコードは同一だが OpenJDK にサポートを付けたものをオラクル（旧サン・マイクロシステムズ）は Oracle Java SE Development Kit (Oracle JDK) として配布している。

Oracle Java SE Development Kit はLinux、macOS、Windows向けのパッケージが用意されている。OpenJDK は加えてIBM AIXも対応している。Oracle Java SE Development Kit 11まではSolaris向けのパッケージも用意されていたが、Java 12と13はOpenJDKのみになり、JEP 362にてそれ以降のOpenJDKでのサポートは終了し
、有志によってSolarisサポートが継続している。

JDK に関してオラクルのサポートを受けるには Oracle Java SE Universal Subscription などの有償契約が必要。Oracle Java SE Development Kit は、JDK 17 以降の LTS は、リリース後3年間は無償利用も可能であるが、それ以降は Oracle Java SE Universal Subscription の有償契約が必要。OpenJDK には3年間の制限はない。Oracle Java SE Universal Subscription の日本での2025年9月の価格は1台あたり年間27,900円。

2006年11月17日に、サン・マイクロシステムズはJDKをGNU General Public License (GPL) に基づきリリースすると発表し、2007年5月8日にJDKのソースコードをOpenJDKに寄付した。従ってOpenJDKは自由ソフトウェアである。OpenJDKなどの他の実装と区別するため、従来のJDKはSun JDKあるいはOracle JDKとも呼ばれる。

## Java SE以外のエディション
JavaのAPIセットおよび実行環境 (Java Runtime Environment, JRE) はその用途ごとに、Java Platform, Standard Edition (Java SE)、Java Platform, Enterprise Edition (Java EE)、Java Platform, Micro Edition (Java ME) などのエディション（プロファイル）が用意されているが、Java SE Development KitはJava SE向けの開発に対応する。Java EE向けの開発にはJava EE SDKが、Java ME向けの開発にはJava ME SDKがそれぞれ用意されていた。

なお、Java EE SDK および Java ME SDK は Java 8 が最後のバージョンで開発終了となった。Java EE は Jakarta EE に引き継がれている。

## 同梱ツール
JDK 25には以下のツールが含まれている。

* jar &ndash; アーカイバで、関連するクラスライブラリを単一のJARファイルにパッケージする。このツールはJARファイルを管理するのにも役に立つ。
* jarsigner
* java &ndash; Javaアプリケーション用のローダ。このツールはインタプリタで、javacコンパイラにより生成されたクラスファイルを解釈できる。現在では1つのランチャーが開発と配備の両方で使用される。古い配備ランチャーであるjreはもう付属せず、代わりに新しいjavaローダに置き換えられた。
* javac &ndash; Javaコンパイラで、ソースコードをJavaバイトコードに変換する。
* javadoc &ndash; ドキュメンテーション生成器で、ソースコードのコメントから自動的にドキュメンテーションを生成する。
* javap &ndash; クラスファイル逆アセンブラ
* jcmd
* jconsole &ndash; Javaモニタリングおよび管理コンソール
* jdb &ndash; デバッガ
* jdeprscan
* jdeps
* jfr
* jhsdb
* jinfo &ndash; このユーティリティにより起動中のJavaプロセスやクラッシュダンプから設定情報を得る
* jlink
* jmap &ndash; このユーティリティはJava用のメモリマップを出力し、指定のプロセスやコアダンプの共有オブジェクトメモリマップやヒープメモリの詳細を表示できる
* jmod
* jnativescan
* jpackage
* jps &ndash; Java仮想マシンプロセスステータスツールはターゲットとなるシステム上に取り付けられたHotSpot Java仮想マシンを一覧にする
* jrunscript &ndash; Javaコマンドラインスクリプトシェル
* jshell
* jstack &ndash; JavaスレッドのJavaスタックトレースを表示するユーティリティ
* jstat &ndash; Java仮想マシン静的モニタリングツール
* jstatd &ndash; jstatデーモン
* jwebserver
* keytool &ndash; キーストアを操作するためのツール
* rmiregistry
* serialver

Windows に限り以下のものが含まれている。
* jabswitch
* jaccessinspector
* jaccesswalker
* javaw
* kinit
* klist
* ktab

以下はかつて含まれていた物。
* appletviewer &ndash; このツールはウェブブラウザなしでJavaアプレットを起動しデバッグするために使用される。
* apt &ndash; アノテーション処理ツール
* extcheck &ndash; JARファイル衝突を検出可能なユーティリティ
* idlj &ndash; IDL-to-Javaコンパイラ。このユーティリティは指定されたJava IDLファイルからJavaバインディングを生成する。
* javah &ndash; Cヘッダとスタブ生成器で、ネイティブメソッドを書くのに使われる。
* javaws &ndash; JNLPアプリケーション用のJava Web Startランチャー
* jhat &ndash; Javaヒープ分析ツール（実験用）
* pack200 &ndash; JAR圧縮ツール
* policytool &ndash; ポリシー作成および管理ツールで、様々なソースからコード用に利用可能であるかどうかのパーミッションを指定することで、Javaランタイム用のポリシーを決定できる。
* VisualVM &ndash; いくつかのコマンドラインJDKツールを統合するビジュアルツールで、軽快なパフォーマンスでメモリプロファイリングが可能である。
* wsimport &ndash; Webサービス呼び出し用のポータブルなJAX-WSアーティファクトを生成する。
* xjc &ndash; Java API for XML Binding (JAXB) APIの一部。XMLスキーマを受けてJavaクラスを生成する。

実験用ツールはJDKの将来のバージョンで利用不可能になるかもしれない。

Java 10までは、JDKには、通常プライベートランタイムと呼ばれる完全なJava Runtime Environment (JRE) も付属していた。JDKが「レギュラー」なJREから分離され余分な内容が含まれているためである。それはJava仮想マシンおよび、国際化と地域化ライブラリやIDLライブラリのような、開発者にのみ役に立つ追加ライブラリと同様に、生産環境として提供されるクラスライブラリの全てから構成される。

JDKのコピーは、Java APIのほとんど全ての部分の利用を説明する広範囲なプログラム例の抜粋も含んでいる。

## JDKとSDKの曖昧さ

JDKは、ソフトウェア開発キット（SDK）の拡張サブセットを構成している。オラクルは、JDKをJava SE開発キットを指す用語として使用することを強く推奨している。Java SE SDKは、JDKとセットでも、JDKなしでも利用可能であり、特にJava SE 7 JDKを意味している。

## OpenJDK以外
OpenJDKおよびその派生ソフトウェア（Oracle Java SE Development Kitなど）が広く使われているが、様々なプラットフォームで一般的に利用可能な他のJDKもある。それら全ては基本的なJava仕様に基づいているが、ガベージコレクション、コンパイル方法、そして最適化技術といった明確に指定されていない部分はしばしば異なる。それらを以下に示す。

開発中のもの:
* Eclipse OpenJ9 JDK &ndash; AIX、Linux、Windows、MVS、OS/400、Pocket PC、z/OS用
* 

開発が終了したもの:
* Apache Harmony
* AppleのClassic Mac OS用の JVM / JDK
*  &ndash; Linux用のSun JDKの移植
* GNUプロジェクトのGNU Classpath、GNU Interpreter for Java (GIJ) およびGNU Compiler for Java (GCJ)
* IcedTea
* オラクルの JDK &ndash; Windows、Linux、Solaris用

## 関連項目

* Javaプラットフォーム
* クラスパス

## 脚注

### 注釈

### 出典

## 外部リンク

* Javaソフトウェア - オラクル - Oracle 日本 
* OpenJDK