Java™ プラットフォームの概要


JRE と JDK

Oracle では、Java™ Platform Standard Edition (Java™ SE) ファミリの主要なソフトウェア製品として、次の 2 つのソフトウェアを提供しています。

Java SE Runtime Environment (JRE)

JRE は、Java プログラミング言語で記述されたアプレットやアプリケーションを実行するのに必要なライブラリ、Java 仮想マシン、その他のコンポーネントを提供します。この実行環境は、作成したアプリケーションを独立して実行できるようにするため、アプリケーションと一緒に再配布できます。

Java SE Development Kit (JDK)

JDK には、JRE のほか、アプレットやアプリケーションを開発するのに必要または便利なコンパイラやデバッガなどのコマンド行開発ツールが含まれています。


Java プログラミング言語

Java プログラミング言語は、同時処理が可能で、強く型付けされるという特徴を備え、クラスをベースとした、汎用のオブジェクト指向言語です。通常は、Java 仮想マシン仕様で定義されたバイトコード命令セットおよびバイナリ形式にコンパイルされます。詳細は、「言語の特徴」を参照してください。


Java 仮想マシン

Java 仮想マシンは抽象的な計算機で、命令セットを備え、実行時にメモリーを操作します。Java 仮想マシンはさまざまなプラットフォームに移植されているため、ハードウェアおよびオペレーティングシステムに依存しないという特徴があります。

Java Platform Standard Edition は、次の 2 つの Java VM (仮想マシン) を提供しています。

Java HotSpot Client VM

クライアント VM は、主としてクライアントアプリケーション用にプラットフォームを使用するために開発された実装です。クライアント VM は起動時間を短縮し、メモリーサイズを縮小するように調整されています。これを起動するには、アプリケーションの起動時に -client コマンド行オプションを使用します。

Java HotSpot Server VM

サーバー VM は、プログラム実行速度を最大化するように設計された実装ですが、その代わりに起動時間が長くなり、メモリー使用量も多くなっています。これを起動するには、アプリケーションの起動時に -server コマンド行オプションを使用します。

詳細は、VM のドキュメントを参照してください。


基本ライブラリ

Java プラットフォームに基本的な機能を提供するクラスとインタフェースです。

Lang および Util パッケージ

基本的な Object および Class クラスのほか、プリミティブ型のためのラッパークラス、基本数値演算のためのクラス、その他を提供します。詳細は、Lang および Util のドキュメントを参照してください。

Math

Math の機能には、浮動小数点ライブラリと、任意精度の数値演算が含まれています。詳細は、Math のドキュメントを参照してください。

監視と管理

Java プラットフォーム向けの包括的な監視および管理のサポートとしては、Java 仮想マシン用の監視および管理 API、ロギング機能用の監視および管理 API、jconsole やその他の監視ユーティリティー、すぐに利用できる監視および管理機能である Java Management Extensions (JMX)、そして Oracle のプラットフォーム拡張機能があります。詳細は、監視および管理のドキュメントを参照してください。

パッケージバージョン識別

パッケージのバージョン管理機能により、パッケージレベルでのバージョン管理が可能になり、アプリケーションおよびアプレットは、特定の Java 実行時環境、仮想マシン、およびクラスパッケージのバージョンを実行時に識別できるようになります。詳細については、「パッケージバージョン識別」のドキュメントを参照してください。

参照オブジェクト

参照オブジェクトを使うことにより、限定されたレベルでのガベージコレクタとの対話が可能になります。ほかのあるオブジェクトがガベージコレクタによってすでに再生されていても、そのオブジェクトを指す参照を維持する場合に、プログラムは参照オブジェクトを使うことができます。さらに、プログラムは、あるオブジェクトへの到達可能性が変わったとガベージコレクタが判断したあと、しばらくして通知を受けるようにできます。このため、参照オブジェクトは、次の場合に役立ちます。単純なキャッシュと同様にメモリーが残り少なくなったときにフラッシュされるキャッシュを構築したり、再生されるときにキーや値を維持しないマッピングを実装したり、Java のファイナライズメカニズムよりも柔軟な方法で事前のクリーンアップアクションをスケジュールしたりする場合などがあります。詳細は、参照オブジェクトのドキュメントを参照してください。

リフレクション

リフレクションによって Java コードは、ロードしたクラスのフィールド、メソッド、およびコンストラクタに関する情報を検出し、リフレクトされたフィールド、メソッド、およびコンストラクタを使って、オブジェクト上でこれらの基にある対応部分を操作することが、セキュリティーの制約のもとで可能になります。この API により、(実行時のクラスに基づく) ターゲットオブジェクトの public メンバー、または所定クラスが宣言したメンバーへのアクセスを必要とするアプリケーションの作成が可能になります。プログラムでは、デフォルトのリフレクションアクセス制御を抑止できます。詳細は、リフレクションのドキュメントを参照してください。

Collections Framework

コレクションとは、オブジェクトのグループを表すオブジェクトのことです。Collections Framework は、コレクションを表現するための統一されたアーキテクチャーで、コレクションの表現の詳細に依存することなくコレクションを操作できます。これにより、プログラミングの労力が軽減され、パフォーマンスが向上します。Collections Framework により、互いに関連していない複数の API 間の相互運用が可能になります。このため、新しい API を学んだり設計したりする労力が軽減され、ソフトウェアの再利用が促進されます。詳細は、Collections Framework のドキュメントを参照してください。

並行処理ユーティリティー

並行処理ユーティリティーパッケージは、スレッドプールやブロックキューなど、パフォーマンスの高いスレッドユーティリティーのための強力で拡張可能なフレームワークを提供します。このパッケージを利用するプログラマは、これらのユーティリティーを自分で作成する手間から解放されます。ちょうど、Collections Framework のおかげでデータ構造を構築する労力が軽減されたのと同じです。さらに、これらのパッケージは、高度な並行処理プログラミングに利用できる下位レベルのプリミティブ機能も提供します。詳細は、並行処理ユーティリティーのドキュメントを参照してください。

Java Archive (JAR) ファイル

JAR (Java ARchive) は、多数のファイルを 1 つのファイルに集約するための、プラットフォームから独立したファイル形式です。複数の Java アプレットおよびそのほかに必要とされるコンポーネント (.class ファイル、イメージと音声) は、JAR ファイルにバンドルされ、単一の HTTP トランザクションでブラウザにダウンロードされます。これによりダウンロードの速度は大きく改善されます。JAR フォーマットは、圧縮もサポートします。これによって、ファイルサイズが縮小され、さらにダウンロード時間が改善されます。加えて、アプレットの作成者は JAR ファイル中の個別のエントリに電子的な署名を付加することにより配布元を認証できます。また、完全に拡張可能です。詳細は、Java Archive のドキュメントを参照してください。

ロギング

Logging API を利用すると、エンドユーザー、システム管理者、フィールドサービスエンジニア、およびソフトウェアの開発チームが分析するのに適したログレポートを生成できるので、ソフトウェアのサービス提供や顧客サイトでの保守が容易になります。Logging API では、アプリケーションまたはプラットフォームで発生したセキュリティーの失敗、構成エラー、パフォーマンスボトルネック、バグなどの情報を取り込みます。詳細は、ロギングのドキュメントを参照してください。

Preferences

Preferences API は、ユーザーおよびシステムの設定や構成データを、アプリケーションが格納および取得する手段を提供します。このデータは、実装ごとに異なるバッキングストアに永続的に保存されます。設定ノードは 2 つの個別のツリーで構成されます。一方はユーザー設定用、もう一方はシステム設定用です。詳細は、Preferences API のドキュメントを参照してください。

その他の基本パッケージ

I/O

java.io および java.nio パッケージは、アプリケーションの入出力を管理するための豊富な API セットを提供します。その機能には、ファイルおよびデバイスの入出力、オブジェクト直列化、バッファー管理、文字セットのサポートが含まれます。そのほか API は、多重化された非ブロック入出力、メモリーマッピング、ファイルのロックなど、スケーラブルなサーバーの機能をサポートします。詳細は、I/O のドキュメントを参照してください。

オブジェクト直列化

オブジェクト直列化は、コア Java の入出力クラスを、オブジェクトをサポートするように拡張するものです。オブジェクト直列化は、オブジェクトとそこから参照されているオブジェクトを、バイトストリームにエンコードします。そして、そのストリームからオブジェクトグラフの補足的な再構築を行います。直列化は、簡易な永続性の実現や、ソケットや Remote Method Invocation (RMI) による通信のために使用されます。詳細は、オブジェクト直列化のドキュメントを参照してください。

ネットワーク機能

ネットワーク機能のためのクラスを提供します。たとえば、アドレス指定、URL や URI を使用するためのクラス、サーバーに接続するためのソケットクラス、ネットワークセキュリティー機能などがあります。詳細は、ネットワーク機能のドキュメントを参照してください。

セキュリティー

構成変更が可能なアクセス制御、デジタル署名、認証と承認、暗号化、セキュアなインターネット通信など、セキュリティー関連機能のための API です。詳細は、セキュリティーのドキュメントを参照してください。

国際化

国際化したアプリケーションの開発を可能にする API です。国際化とは、技術的な変更をせずにアプリケーションをさまざまな言語および地域に適合させるための、アプリケーションの設計プロセスのことです。詳細は、国際化のドキュメントを参照してください。

JavaBeans™ Component API

Bean (JavaBeans™ アーキテクチャーに基づいたコンポーネントで、アプリケーションの開発過程で部品としてアプリケーションに組み込むことができる) の開発に関連したクラスが入っています。詳細は、JavaBeans のドキュメントを参照してください。

JMX (Java Management Extensions)

Java Management Extensions (JMX) API は、アプリケーション、デバイス、サービス、Java 仮想マシンなどのリソースを管理および監視するための標準 API です。典型的な用途として、アプリケーション構成の調査と変更、アプリケーションの動作に関する統計情報の収集、状態変化やエラー条件の通知などが考えられます。JMX API にはリモートアクセスが含まれているため、リモート管理プログラムがこれらの目的で実行中のアプリケーションと対話することが可能です。詳細は、Java Management Extensions のドキュメントを参照してください。

XML (JAXP)

Java プラットフォームは、XML ドキュメントおよびデータを処理するための API を豊富に提供しています。詳細は、Java SE の XML に関するドキュメントを参照してください。

Java Native Interface (JNI)

Java Native Interface (JNI) は、Java ネイティブメソッドを記述したり、Java 仮想マシンをネイティブアプリケーションに組み込んだりするための標準プログラミングインタフェースです。主な目的は、所定のプラットフォーム上のすべての Java 仮想マシンの実装間で、ネイティブメソッドライブラリをバイナリ互換とすることにあります。詳細は、Java Native Interface のドキュメントを参照してください。

拡張機能メカニズム

オプションパッケージは、Java クラスとそれに関連するネイティブコードのパッケージです。これらのパッケージを使うことにより、アプリケーションの開発者はコアプラットフォームの機能を拡張できます。拡張機能メカニズムにより、Java プラットフォームを使用する場合と同じように、Java 仮想マシンからオプションの拡張機能クラスを利用できます。拡張機能メカニズムにより、必要なオプションパッケージが JDK または Runtime Environment にインストールされていない場合は、指定された URL から取得することもできます。詳細は、Java 拡張機能メカニズムドキュメントを参照してください。

推奨標準オーバーライドメカニズム

推奨標準は、Java Community ProcessSM (JCPSM) 以外の標準化過程で定義された Java API です。推奨標準は JCP の外部で定義されるため、Java プラットフォームのリリースの間に改訂される可能性があります。推奨標準の新しいリビジョンを利用するために、開発者やソフトウェアベンダーは、推奨標準優先メカニズムを使って、Oracle がリリースした Java プラットフォームに組み込まれているものより新しいバージョンの推奨標準を提供できます。詳細は、推奨標準優先メカニズムに関するドキュメントを参照してください。


統合ライブラリ

Java Database Connectivity (JDBC) API

JDBC™ API は、Java プログラミング言語からの汎用的なデータアクセスを提供します。JDBC 3.0 API を使用すると、開発者はリレーショナルデータベース、スプレッドシート、フラットファイルなど、実質上あらゆるデータソースにアクセスできるアプリケーションを記述できます。JDBC テクノロジは、ツールと代替インタフェースを構築できる共通のベースも提供しています。詳細は、JDBC のドキュメントを参照してください。

Remote Method Invocation (RMI)

Remote Method Invocation (RMI、リモートメソッド呼び出し) を使用すると、Java プログラミング言語で記述されたプログラム間でのリモート通信が可能になるため、分散アプリケーションを開発できます。RMI では、1 つの Java 仮想マシンで実行中のオブジェクトから、別の Java VM (異なるホスト上にあってもよい) で実行中のオブジェクトにあるメソッドを呼び出すことができます。詳細は、Java SE RMI のドキュメントを参照してください。

Java IDL (CORBA)

Java IDL テクノロジは、Java プラットフォームに CORBA (Common Object Request Broker Architecture) 機能を追加することにより、標準規格に準拠した相互運用性および接続機能を提供します。Java IDL を使用すると、Web 対応の分散型 Java アプリケーションから、Object Management Group による業界標準の IDL (Object Management Group Interface Definition Language) や IIOP (Internet Inter-ORB Protocol) 経由で、リモートネットワークサービス上のオペレーションを透過的に呼び出すことができます。ランタイムコンポーネントには、IIOP 通信を使った分散コンピューティング用の Java ORB が含まれています。詳細は、Java IDL のドキュメントを参照してください。

RMI-IIOP

これは、Java Remote Method Invocation over Internet Inter-ORB Protocol テクノロジの略です。RMI プログラミングモデルにより、RMI API を利用した CORBA サーバーおよびアプリケーションのプログラミングが可能になります。Java Remote Method Protocol (JRMP) をトランスポートとして使用して Java プログラミング言語だけで作業することも、Internet InterORB Protocol (IIOP) を使用してほかの CORBA 対応プログラミング言語を併用して作業することもできます。CORBA 準拠の言語で記述されたほかのアプリケーションに Internet InterORB Protocol (IIOP) 経由で接続するのに必要なコードを生成するには、rmic コンパイラを使用します。別の言語で記述された CORBA アプリケーションを使用する場合の IDL は、-idl オプションを指定した rmic コンパイラを使って Java プログラミング言語インタフェースから生成できます。IIOP スタブおよび Tie クラスを生成するには、-iiop オプションを指定した rmic コンパイラを使用します。詳細は、RMI-IIOP のドキュメントを参照してください。

Scripting for the Java Platform

Java SE 6 は、「JSR 223: Scripting for the Java™ Platform」の API を含みます。これは、Java アプリケーションがスクリプトエンジンを「ホストする」ためのフレームワークです。Java SE 6 の Oracle の実装には、Mozilla Rhino:java_script for Java に基づくスクリプトエンジンのサンプルが含まれています。スクリプトフレームワークでは、jar「サービス検出」メカニズムによって、サードパーティー製のスクリプトエンジンがサポートされています。JSR-223 に準拠したスクリプトエンジンを CLASSPATH に「入れて」、使用している Java アプリケーションから同じスクリプトエンジンにアクセスできます。詳細は、スクリプトのドキュメントを参照してください。

Java Naming and Directory Interface™ (JNDI) API

Java Naming and Directory Interface™ (JNDI) は、Java プログラミング言語で記述されたアプリケーションに、ネーミングおよびディレクトリ機能を提供します。ほかのネームおよびディレクトリサービスの実装と独立して動作するように設計されています。新しいサービス、展開されつつあるサービス、すでに展開されているサービスなど、さまざまなサービスに対して共通の方法でアクセスすることができます。JNDI アーキテクチャーは、API および SPI (Service Provider Interface) から構成されます。この API を使用すると、Java アプリケーションからさまざまなネームおよびディレクトリサービスにアクセスできます。SPI によって、さまざまなネームおよびディレクトリサービスが透過的にプラグインされます。これらのサービスには、JNDI API を使用して Java アプリケーションからアクセスできます。詳細は、JNDI のドキュメントを参照してください。


ユーザーインタフェースライブラリ

Input Method Framework

Input Method Framework は、テキスト編集時に、テキスト編集コンポーネントとインプットメソッドの間の共同作業を可能にします。インプットメソッドは、ユーザーがテキストを単にキーボード上でタイプする以外の方法でテキストを入力できるソフトウェアコンポーネントです。インプットメソッドは、多くの種類の文字が必要な日本語、中国語、または韓国語を、文字数よりはるかにキー数が少ないキーボードから入力する方式として普及しています。しかしフレームワークは、ほかの言語と、手書き文字認識や音声認識などのまったく異なるインプットメカニズムのためのインプットメソッドもサポートしています。詳細は、Input Method Framework のドキュメントを参照してください。

Accessibility

Java Accessibility API により、開発者は、体の不自由な方が利用可能な Java アプリケーションを容易に作成できます。Accessible Java アプリケーションは、画面リーダー、音声認識システム、および点字ディスプレイなどのユーザー補助テクノロジに対応しています。詳細は、Accessibility のドキュメントを参照してください。

印刷サービス

Java™ 印刷サービス API を使用すると、Java ME プロファイルなど、サイズが制限されるプラットフォームを含め、すべての Java プラットフォームで印刷が可能になります。詳細は、Java 印刷サービスのドキュメントを参照してください。

「サウンド」

Java プラットフォームには、オーディオおよび MIDI (Musical Intstrument Digital Interface) データの取り込み、処理、および再生用の強力な API が含まれています。この API は、このプラットフォームでの高品質なオーディオミキシングおよび MIDI 合成を保証する効果的なサウンドエンジンによってサポートされています。詳細は、Java Sound のドキュメントを参照してください。

ドラッグ&ドロップによるデータ転送

ドラッグ&ドロップにより、Java プログラミング言語とネイティブアプリケーションの間、異なる Java プログラミング言語アプリケーションの間、および同一の Java プログラミング言語アプリケーション内でのデータ転送が可能です。詳細は、「ドラッグ&ドロップ転送」を参照してください。

Image I/O

Java Image I/O API は、ファイルに格納されたイメージや、ネットワーク経由でアクセスするイメージを処理するための、プラグイン可能なアーキテクチャーを提供します。この API は、イメージの形式に特有のプラグインを追加するためのフレームワークを提供します。よく使われるいくつかのイメージ形式用のプラグインが Java Image I/O に組み込まれていますが、サードパーティーが特殊なイメージ形式用の独自のプラグインを作成するためにこの API を利用することもできます。詳細は、「Image I/O」を参照してください。

Java 2D™ グラフィックスとイメージング

Java 2D™ API は、2 次元の高度なグラフィックスとイメージングを処理するクラスの集まりです。ラインアート、テキスト、およびイメージが、1 つの総合モデルの中に含まれています。この API は、イメージの合成とアルファチャンネルイメージ、正確な色空間の定義と変換用のクラスセット、および表示用イメージング演算子の豊富なセットを幅広くサポートします。詳細は、Java 2D のドキュメントを参照してください。

AWT

Java™ プラットフォームの Abstract Windowing Toolkit (AWT) は、メニュー、ボタン、テキストフィールド、ダイアログボックス、チェックボックスなどのユーザーインタフェースコンポーネントを構築し、これらのコンポーネントからのユーザー入力を処理するための API を提供しています。さらに、AWT を使用すると、楕円や多角形などの簡単な図形をレンダリングしたり、アプリケーションで使用するユーザーインタフェースのレイアウトやフォントを開発者が制御したりすることもできます。詳細は、AWT のドキュメントを参照してください。

Swing

Swing API も、ユーザーインタフェースに使用するグラフィカルコンポーネント (GUI) を提供するものです。Swing API は、Java プログラミング言語で記述されており、ベースとなるオペレーティングシステムから提供される GUI 機能に固有のコードには依存しません。そのため、Swing GUI コンポーネントは、アプリケーションの実行中に切り替えることのできる、「プラグイン可能な」Look&Feel を備えています。詳細は、Java SE Swing のドキュメントを参照してください。

JavaFX

Java SE 7 Update 2 以降には JavaFX SDK が含まれています。JavaFX プラットフォームは、Java クライアントプラットフォームを発展させたものであり、複数のプラットフォーム間で一貫した動作をする Rich Internet Application (RIA) をアプリケーション開発者が容易に作成および配備できるように設計されています。詳細は、「JavaFX Release Documents」を参照してください。


配備

Java の配備

インストール、セットアップ、更新、再配布、および関連トピック:

  • コンピュータへの Java プラットフォームのインストール
  • Java コントロールパネルの設定オプション
  • Java プログラミング言語でのアプリケーションやアプレットの作成
  • アプレットを呼び出したり、アプリケーションをダウンロードして起動したりするための Web ページの作成
  • Web サーバーで Java 関連ファイルを利用可能にする
  • コンピュータ上の Java プラットフォームの更新

詳細は、配備全般Java Plug-in、および Java Web Start のドキュメントを参照してください。


ツールの仕様

デバッガのアーキテクチャー

開発環境で使用するデバッガのアーキテクチャーおよび仕様です。詳細は、Java Platform Debugger Architecture (JPDA) のドキュメントを参照してください。

VM Tool インタフェース

Java Virtual Machine Tool Interface (JVMTI) は、JVM 内で実行されているアプリケーションの状態を検査し、実行を制御するための仕様です。Java Virtual Machine Profiler Interface (JVMPI) は、現在では非推奨です。詳細は、Java Virtual Machine Tool Interface (JVMTI) のドキュメントを参照してください。

Javadoc ツール

Javadoc は、ソースファイルの宣言とドキュメンテーションコメントを解析して、プログラム要素について記述した一式の HTML ページを生成するツールです。ドックレット API により、プログラムやライブラリのソースレベルの構造 (ソースに埋め込まれた Javadoc コメントを含む) を調べるためのメカニズムがクライアントに提供されます。ドックレットは、この API を使用してドキュメントを生成できます。詳細は、Javadoc のドキュメントを参照してください。

注釈処理

apt ツールは、注釈処理のためのコマンド行ユーティリティーです。このツールには一式のリフレクト API が含まれており、プログラムの注釈を処理するためのインフラストラクチャーをサポートしています。これらのリフレクション API により、プログラム構造を、ビルド時に、ソースベースまた読み取り専用で見ることが可能になります。そして、ジェネリクスが追加されたあとの Java プログラミング言語の型システムを明瞭にモデル化できるように設計されています。詳細は、apt のドキュメントを参照してください。

Dynamic Attach

com.sun.tools.attach パッケージには、Oracle の Java プラットフォームへの拡張機能が含まれています。これによって、実行中の Java 仮想マシンにアプリケーションを接続できます。いったん接続すると、ターゲット仮想マシンでツールエージェントを起動させることができます。詳細は、接続のドキュメントを参照してください。

JConsole API

com.sun.tools.jconsole パッケージには、Oracle の Java プラットフォームへの拡張機能が含まれています。これによって、JConsole にアクセスするためのプログラムインタフェースを提供します。詳細は、「JConsole の使用」を参照してください。


JDK ツールとユーティリティー

JDK には、ツールおよびユーティリティーのドキュメントが含まれています。それらのドキュメントでは、基本ツール (javac、java、javadoc、apt、appletviewer、jar、jdb、javah、javap、extcheck)、セキュリティーツール、国際化ツール、RMI ツール、IDL および RMI-IIOP ツール、配備ツール、Java Plug-in ツール、Java Web Start ツール、監視および管理ツール、トラブルシューティングツールについて説明されています。詳細は、「JDK ツールとユーティリティー」ドキュメントを参照してください。


プラットフォーム

Oracle は、Microsoft Windows、Linux、Solaris の各オペレーティングシステム用の JDK および Java Runtime Environment の実装を提供しています。これらのプラットフォームのどのバージョンがサポートされているかに関する情報は、「System Configurations」を参照してください。

Macintosh や AIX など、その他のオペレーティングシステムについては、他社が Java プラットフォームの実装を提供していることがあります。



Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.