Javaクラスライブラリ(ジャバクラスライブラリ、JCL)はJavaアプリケーションが実行時に呼び出せる動的ロード可能なライブラリ群である。また、特にJREが提供している java.lang 名前空間他の基本的なクラスを含むライブラリを指すこともある。このライブラリがそれぞれのオペレーティングシステム (OS) あるいはプロセッサ (CPU) の固有機能やシステムライブラリなどを隠蔽して抽象化・標準化する吸収層として働くことで、JavaアプリケーションなどがOSなどのプラットフォームに直接依存することを避けられるようになっている[1]。

JCLはJavaプラットフォーム内で次の3つの役割を担っている。

実装と設定

JCLはほぼ全体がJavaで書かれているが、ハードウェアやOSに直接アクセスする必要のある部分はその限りではない(例えば、入出力、ビットマップグラフィックス)。そのようなアクセスを行うクラスでは、一般にOSのAPIへのラッパーとして Java Native Interface を使用している。

JCLのほぼ全体が単一のJavaアーカイブファイル "rt.jar" に格納されており、JREやJDKの一部として配布されている。Javaクラスライブラリ (rt.jar) はデフォルトのブートストラップクラスパスに置かれ[2]、アプリケーションが一々クラスパスを指定する必要はない。ランタイムではJCLを探すのにブートストラップクラスローダを使う。

適合

任意のJava実装は Java Technology Compatibility Kit のコンプライアンステストに合格する必要があり、そこにJCLについてのテストも含まれている。

主な機能

JCLの機能には、パッケージでカプセル化されたクラス群を通してアクセスする。

ライセンス

かつてのライセンス

OpenJDKがリリースされる以前、JDKは基本的にプロプライエタリなライセンスだった。2006年、サン・マイクロシステムズはJavaをオープンソースにする意思があると発表。2007年前半にJDKのほぼ全部をオープンソースとしてリリースすると約束した。2007年5月8日、サンがオープンソース化する権利を有していない一部を除いたクラスライブラリのソースコードをGPLライセンスで公開した[3]。その後は、公開できなかった部分をオープンソース化することが目標となった。

オープンソース化できなかった部分は使わないとしても依存関係があるためにビルドには必須であり、「バイナリプラグ」と呼ばれた[4]。サン(と後にオラクル)はコミュニティの協力も得て、バイナリプラグをオープンソース化したりオープンソースの代替品で置換していった。2008年5月にリリースされた OpenJDK 6 ではオープンソース化できていない部分は1%となっていた[5][6]。

2007年5月時点でオープンソース化できていなかった部分(OpenJDK 7 の4%)は次の通りである[7][8]。

オープンソースライセンス

2010年12月、「バイナリプラグ」と呼ばれていた部分は全てオープンソースの代替品で置換され、JDK全体がオープン化された[16]。

代替実装

Javaクラスライブラリの他のフリーソフトウェア実装としては、GNU Classpath がある。他の実装とは異なり、これはクラスライブラリのみを実装しており、多くのフリーなJava実装(ランタイム)、Kaffe、SableVM、JamVM(英語版)、CACAO(英語版) などで使われている。

Apache Harmony もクラスライブラリのフリーソフトウェア実装だった。これにはJava仮想マシンとJavaコンパイラなども含まれており、Javaスタック全体をフリーソフトウェアで実装することを目的としていた。

脚注

  1. ↑ OSごとに違いのある部分(パス名の区切りなど)をアプリが意図的に踏めば、プラットフォーム依存は発生し得る。
  2. ↑ How Classes are Found
  3. ↑ Rich Green (2007年5月8日). “Open JDK is here!”. Sun Microsystems. 2011年11月25日閲覧。
  4. ↑ “OpenJDK Binary Plugs”. Sun Microsystems (2007年5月8日). 2011年11月25日閲覧。
  5. ↑ Angel, Lillian (2008年3月13日). “OpenJDK to replace IcedTea in Fedora 9”. 2012年12月10日時点のオリジナルよりアーカイブ。2008年4月5日閲覧。
  6. ↑ Wade, Karsten (2008年3月13日). “OpenJDK in Fedora 9!”. redhatmagazine.com. 2008年4月5日閲覧。 “Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008.”
  7. ↑ Herron, David (2007年10月4日). “Plans for OpenJDK”. 2007年10月9日閲覧。
  8. 1 2 3 “OpenJDK 6 b10 source posted” (2008年5月30日). 2008年6月1日閲覧。
  9. ↑ audio-engine project page
  10. ↑ “Crypto has been added to OpenJDK” (2007年9月27日). 2007年10月7日閲覧。
  11. ↑ font-scaler projectpage
  12. 1 2 3 Java2D project page
  13. ↑ “Freetype font rasteriser” (2007年8月7日). 2007年11月24日閲覧。
  14. ↑ graphics-rasterizer project page
  15. ↑ “Javascript is encumbered and there is no javascript plugin support.”. IcedTea (2008年3月11日). 2008年6月1日閲覧。 “Changing Summary. JavaScript is no longer encumbered, but we still need liveconnect support.”
  16. ↑ Kelly O'Hair (December 2010). “OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed”. Oracle Corporation. 2011年11月25日閲覧。

関連項目

外部リンク

⌬ Phoenix Mesh CID: 未登録 IPFS未登録 📡 0ピア N=1 CRITICAL PQS B65