Javaクラスライブラリ

Javaクラスライブラリ（ジャバクラスライブラリ、JCL）はJavaアプリケーションが実行時に呼び出せる動的ロード可能なライブラリ群である。また、特にJREが提供している 名前空間他の基本的なクラスを含むライブラリを指すこともある。このライブラリがそれぞれのオペレーティングシステム (OS) あるいはプロセッサ (CPU) の固有機能やシステムライブラリなどを隠蔽して抽象化・標準化する吸収層として働くことで、JavaアプリケーションなどがOSなどのプラットフォームに直接依存することを避けられるようになっている。
JCLはJavaプラットフォーム内で次の3つの役割を担っている。
実装と設定.
JCLはほぼ全体がJavaで書かれているが、ハードウェアやOSに直接アクセスする必要のある部分はその限りではない（例えば、入出力、ビットマップグラフィックス）。そのようなアクセスを行うクラスでは、一般にOSのAPIへのラッパーとして Java Native Interface を使用している。
JCLのほぼ全体が単一のJavaアーカイブファイル "rt.jar" に格納されており、JREやJDKの一部として配布されている。Javaクラスライブラリ (rt.jar) はデフォルトのブートストラップクラスパスに置かれ、アプリケーションが一々クラスパスを指定する必要はない。ランタイムではJCLを探すのにブートストラップクラスローダを使う。
適合.
任意のJava実装は Java のコンプライアンステストに合格する必要があり、そこにJCLについてのテストも含まれている。
主な機能.
JCLの機能には、パッケージでカプセル化されたクラス群を通してアクセスする。
ライセンス.
かつてのライセンス.
OpenJDKがリリースされる以前、JDKは基本的にプロプライエタリなライセンスだった。2006年、サン・マイクロシステムズはJavaをオープンソースにする意思があると発表。2007年前半にJDKのほぼ全部をオープンソースとしてリリースすると約束した。2007年5月8日、サンがオープンソース化する権利を有していない一部を除いたクラスライブラリのソースコードをGPLライセンスで公開した。その後は、公開できなかった部分をオープンソース化することが目標となった。
オープンソース化できなかった部分は使わないとしても依存関係があるためにビルドには必須であり、「バイナリプラグ」と呼ばれた。サン（と後にオラクル）はコミュニティの協力も得て、バイナリプラグをオープンソース化したりオープンソースの代替品で置換していった。2008年5月にリリースされた OpenJDK 6 ではオープンソース化できていない部分は1%となっていた。
2007年5月時点でオープンソース化できていなかった部分（OpenJDK 7 の4%）は次の通りである。
オープンソースライセンス.
2010年12月、「バイナリプラグ」と呼ばれていた部分は全てオープンソースの代替品で置換され、JDK全体がオープン化された。
代替実装.
Javaクラスライブラリの他のフリーソフトウェア実装としては、GNU Classpath がある。他の実装とは異なり、これはクラスライブラリのみを実装しており、多くのフリーなJava実装（ランタイム）、Kaffe、SableVM、、 などで使われている。
Apache Harmony もクラスライブラリのフリーソフトウェア実装だった。これにはJava仮想マシンとJavaコンパイラなども含まれており、Javaスタック全体をフリーソフトウェアで実装することを目的としていた。