Die Workbench definiert Erweiterungspunkte für Plug-ins, die die Plattform durch Benutzerschnittstellenfunktionen ergänzen. Viele dieser Erweiterungspunkte, insbesondere Assistentenerweiterungen, werden unter Verwendung der Klassen in den Paketen org.eclipse.jface.* implementiert. Wie kann unterschieden werden?
JFace ist ein Toolkit für Benutzerschnittstellen, das Klassen für Hilfeprogramme zur Verfügung stellt, mit denen Benutzerschnittstellenfunktionen entwickelt werden können, deren Implementierung langwierig sein kann. JFace arbeitet auf einer höheren Ebene als ein System mit unformatierten Widgets. JFace stellt Klassen zur Verfügung, mit denen gängige Tasks bei der Programmierung von Benutzerschnittstellen verarbeitet werden können:
Dank JFace können Sie sich ganz auf die Implementierung der spezifischen Funktion Ihres Plug-ins konzentrieren und müssen sich nicht um das zu Grunde liegende System für Widgets oder das Lösen von Problemen kümmern, die in fast jeder Benutzerschnittstellenanwendung auftreten.
Wo endet JFace und wo beginnt die Workbench? Die Abgrenzung ist bisweilen nicht offensichtlich. Die JFace-APIs (aus den Paketen org.eclipse.jface.*) sind generell von den Erweiterungspunkten und APIs der Workbench unabhängig. Ein JFace-Programm könnte sogar ohne jegliche Verwendung von Workbench-Code geschrieben werden.
Die Workbench setzt JFace ein, versucht aber, Abhängigkeiten soweit als möglich zu reduzieren. Beispielsweise wurde das Komponentenmodell der Workbench (IWorkbenchPart) unabhängig von JFace konzipiert. An früherer Stelle wurde bereits erläutert, dass Sichten und Editoren mit Hilfe von SWT-Widgets direkt ohne die Verwendung einer JFace-Klasse implementiert werden können. Wo immer dies möglich ist, versucht die Workbench, "JFace-neutral" zu sein, und ermöglicht es Programmierern auf diese Weise, die JFace-Komponenten zu verwenden, die sinnvoll sind. In der Praxis setzt die Workbench JFace in vielen Fällen zu ihrer Implementierung ein, und API-Definitionen enthalten Verweise auf JFace-Typen. (Beispielsweise sind die JFace-Typen für die Schnittstellen IMenuManager, IToolBarManager und IStatusLineManager als Typen in den Methoden der Schnittstelle IActionBar in der Workbench enthalten.)
Die Grenzen zwischen SWT und JFace sind viel eindeutiger. SWT ist weder von JFace- noch von Plattformcode abhängig. Viele SWT-Beispiele zeigen auf, wie Sie eine eigenständige, so genannte Standalone-Anwendung erstellen können.
JFace ist so konzipiert, dass zusätzlich zur SWT-Bibliothek allgemeine Benutzerschnittstellenfunktionen für Anwendungen bereitgestellt werden. JFace versucht nicht, SWT zu "verdecken" oder dessen Funktionen zu ersetzen. Es bietet Klassen und Schnittstellen, die viele der allgemeinen Tasks verarbeiten, die mit der Programmierung einer dynamischen Benutzerschnittstelle unter Verwendung von SWT zusammenhängen.
Die Beziehung zwischen JFace und SWT wird am deutlichsten, wenn man Anzeigefunktionen und ihre Beziehung zu SWT-Widgets genauer untersucht.