Vi har set, at arbejdsbænken definerer udvidelsespunkter for plugins til brug for levering af UI-funktionalitet til platformen. Mange af disse udvidelsespunkter, især guideudvidelser, implementeres vha. klasser i org.eclipse.jface.*-pakkerne. Hvad er forskellen?
JFace er en UI-værktøjskasse, der stiller hjælpeklasser til rådighed for udvikling af UI-funktionalitet, som kan være besværligt at implementere. JFace fungerer over niveauet for et råelementsystem. Den inkluderer klasser til brug for håndtering af almindelige UI-programmeringsopgaver:
JFace giver dig frihed til at fokusere på implementeringen af en specifik plugins funktion i stedet for at fokusere på det underliggende elementsystem eller på at løse problemer, der er fælles for næsten alle UI-programmer.
Hvor slutter JFace, og hvor begynder arbejdsbænken? Nogle gange er skæringspunktet ikke særligt tydeligt. Som regel er JFace API'erne (fra pakkerne org.eclipse.jface.*) uafhængige af arbejdsbænkens udvidelsespunkter og API'er. I bund og grund kan et JFace-program skrives uden brug af arbejdsbænkkode overhovedet.
Arbejdsbænken gør brug af JFace, men forsøger at reducere afhængigheder, hvor det er muligt. Arbejdsbænkens delmodel (IWorkbenchPart) er udviklet til at være uafhængig af JFace. Tidligere har vi set, at oversigter og editorer kan implementeres direkte vha. SWT-elementer uden brug af JFace-klasser. Arbejdsbænken forsøger at være "JFace-neutral", når det er muligt, og giver derved programmører mulighed for at bruge de JFace-dele, de finder nyttige. I praksis bruger arbejdsbænken JFace til meget implementering, og der er referencer til JFace-typer i API-definitioner. (Eksempel: JFace-grænsefladerne for IMenuManager, IToolBarManager og IStatusLineManager dukker op som typer på arbejdsbænkens IActionBar-metoder.
Når du bruger JFace API, er det en god ide at huske på reglerne for engagement vedr. brug af baggrundsprogramdele. Der er flere oplysninger i afsnittet Arbejdsbænken og programdele.
Skæringspunktet mellem SWT og JFace er meget klarere. SWT er ikke afhængig af nogen JFace- eller platformkode overhovedet. Mange af SWT-eksemplerne viser, hvordan du kan bygge et enkeltstående program.
JFace er udviklet til at stille almindelig program-UI-funktionalitet oven på SWT-biblioteket. JFace forsøger ikke at "skjule" SWT eller erstatte dets funktionalitet. Det stiller klasser og grænseflader til rådighed, som håndterer mange af de generelle opgaver, der er knyttet til programmering af en dynamisk grænseflade vha. SWT.
Relationen mellem JFace og SWT illustreres bedst ved at se på fremvisere og deres relation til SWT-elementer.