ワークベンチは、プラグインがプラットフォームに UI 機能を組み込むための拡張ポイントを定義しています。 これらの拡張ポイントの多く、特にウィザード拡張は、org.eclipse.jface.* パッケージ内のクラスを使用して インプリメントされます。その違いは何でしょうか?
JFace は、単調なインプリメントになりかねない UI フィーチャーの開発のためのヘルパー・クラスを提供する UI ツールキットです。 JFace は、生のウィジェット・システムのレベル以上で動作します。 JFace は、共通の UI プログラミング・タスクを処理するための以下のクラスを提供します。
JFace により、基本のウィジェット・システムに集中したり、 ほとんどの UI アプリケーションに共通の問題を解決したりすることではなく、 特定のプラグインの機能のインプリメンテーションに集中することができます。
JFace はどこで終了し、ワークベンチはどこから開始するのでしょうか。その境界は明確ではないことがあります。 通常、(パッケージ org.eclipse.jface.* の) JFace API は、ワークベンチ拡張ポイントおよび API には依存していません。 おそらく、JFace プログラムは、ワークベンチのコードを全く使用しなくても作成することができるでしょう。
ワークベンチは JFace を利用しますが、可能な限り依存性を小さくしようとします。 例えば、ワークベンチのパーツ・モデル (IWorkbenchPart) は、 JFace に依存しないように設計されています。 前に、SWT ウィジェットを直接使用することにより、JFace クラスを全く使用せずに、ビューとエディターを インプリメントすることができると説明しました。 ワークベンチは、可能な限り「JFace に中立」であろうとし、 プログラマーが役に立つと考える JFace のパーツを使用できるようにします。 実際、ワークベンチはそのインプリメンテーションのほとんどに JFace を使用するので、API 定義には JFace 型への参照があります。 (例えば、 IMenuManager、 IToolBarManager、 および IStatusLineManager の JFace インターフェースは、ワークベンチの IActionBar メソッド内の型として現れます。)
JFace API を使用する場合は、バックグラウンド・スレッドの使用に関する使用規則を覚えておいてください。詳しくは、『ワークベンチおよびスレッド』を参照してください。
SWT と JFace の間の境界はもっとはっきりしています。SWT は JFace またはプラットフォーム・コードには全く依存しません。 SWT のサンプルの多くは、スタンドアロンのアプリケーションを構築する方法を示しています。
JFace は、SWT ライブラリーの上に共通アプリケーション UI の機能を提供するように設計されています。 JFace は、SWT を「非表示」にしようとしたり、その機能を置き換えようとしたりすることはありません。 JFace は、SWT を使用する動的な UI プログラミングに関連付けられている共通タスクの多くを処理するクラスとインターフェースを 提供しています。
JFace と SWT との間の関係は、ビューアー、およびそれと SWT ウィジェットとの関係に最も明確に示されています。