Java Development Kit

Java Development Kit (JDK) はオラクル（旧サン・マイクロシステムズ）により提供されている、プログラミング言語Javaを使ってJavaアプリケーションおよびその他のソフトウェアコンポーネントを構築するためのソフトウェア開発キット (SDK) および開発環境である。Linux、macOSまたはWindows向けのパッケージがそれぞれ用意されている。JDK 11まではSolaris向けのパッケージも用意されていた。JavaのAPIセットおよび実行環境 (Java Runtime Environment, JRE) はその用途ごとに、Java Platform, Standard Edition (Java SE)、Jakarta EE、Java Platform, Micro Edition (Java ME) などのエディション（プロファイル）が用意されているが、JDKはJava SE向けの開発に対応する。Java EE向けの開発にはJava EE SDKが、Java ME向けの開発にはJava ME SDKがそれぞれ用意されている。

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

JDKの内容
JDKには主要なコンポーネントとして以下のようなプログラミングツールが含まれる :
 appletviewer – このツールはウェブブラウザなしでJavaアプレットを起動しデバッグするために使用される。
 apt – アノテーション処理ツール
 extcheck – JARファイル衝突を検出可能なユーティリティ
 idlj – IDL-to-Javaコンパイラ。このユーティリティは指定されたJava IDLファイルからJavaバインディングを生成する。
 java – Javaアプリケーション用のローダ。このツールはインタプリタで、javacコンパイラにより生成されたクラスファイルを解釈できる。現在では1つのランチャーが開発と配備の両方で使用される。古い配備ランチャーであるjreはもう付属せず、代わりに新しいjavaローダに置き換えられた。
 javac – Javaコンパイラで、ソースコードをJavaバイトコードに変換する。
 javadoc – ドキュメンテーション生成器で、ソースコードのコメントから自動的にドキュメンテーションを生成する。
 jar – アーカイバで、関連するクラスライブラリを単一のJARファイルにパッケージする。このツールはJARファイルを管理するのにも役に立つ。
 javah – Cヘッダとスタブ生成器で、ネイティブメソッドを書くのに使われる。
 javap – クラスファイル逆アセンブラ
 javaws – JNLPアプリケーション用のJava Web Startランチャー
 JConsole – Javaモニタリングおよび管理コンソール
 jdb – デバッガ
 jhat – Javaヒープ分析ツール（実験用）
 jinfo – このユーティリティにより起動中のJavaプロセスやクラッシュダンプから設定情報を得る（実験用）
 jmap – このユーティリティはJava用のメモリマップを出力し、指定のプロセスやコアダンプの共有オブジェクトメモリマップやヒープメモリの詳細を表示できる（実験用）
 jps – Java仮想マシンプロセスステータスツールはターゲットとなるシステム上に取り付けられたHotSpot Java仮想マシンを一覧にする（実験用）
 jrunscript – Javaコマンドラインスクリプトシェル
 jstack – JavaスレッドのJavaスタックトレースを表示するユーティリティ
 jstat – Java仮想マシン静的モニタリングツール（実験用）
 jstatd – jstatデーモン（実験用）
 keytool – キーストアを操作するためのツール
 pack200 – JAR圧縮ツール
 policytool – ポリシー作成および管理ツールで、様々なソースからコード用に利用可能であるかどうかのパーミッションを指定することで、Javaランタイム用のポリシーを決定できる。
 VisualVM – いくつかのコマンドラインJDKツールを統合するビジュアルツールで、軽快なパフォーマンスでメモリプロファイリングが可能である。
 wsimport – Webサービス呼び出し用のポータブルなJAX-WSアーティファクトを生成する。
 xjc – Java API for XML Binding (JAXB) APIの一部。XMLスキーマを受けてJavaクラスを生成する。

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

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を意味している。

他のJDK
本記事で論じられ最も広範囲に利用されるJDKに加えて、Sun JDKソースやそうではない物である、様々なプラットフォームで一般的に利用可能な他のJDKもある。それら全ては基本的なJava仕様に基づいているが、ガベージコレクション、コンパイル方法、そして最適化技術といった明確に指定されていない部分はしばしば異なる。それらを以下に示す。

開発中やメンテナンスモードの状態であるもの:
 OpenJDK / IcedTea
 GNUプロジェクトのGNU Classpath、GNU Interpreter for Java (GIJ) およびGNU Compiler for Java (GCJ)
  
 IBM J9 JDK – AIX、Linux、Windows、MVS、OS/400、Pocket PC、z/OS用
 オラクルの JDK – Windows、Linux、Solaris用

メンテナンスが終了したもの:
 Apache Harmony
 AppleのClassic Mac OS用の JVM / JDK
  – Linux用のSun JDKの移植

関連項目

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

脚注

注釈

出典

外部リンク

 Oracle - Java SE 
 IBM Java technology JDK 
 OpenJDK 
 GCJ 

Java
ソフトウェア開発キット