Vi har sett at arbeidsbenken definerer utvidelsespunkter for plugin-moduler, og på den måten bidrar til brukergrensesnittfunksjoner i plattformen. En rekke av disse utvidelsespunktene, spesielt veiviserutvidelser, implementeres ved hjelp av klasser i org.eclipse.jface.*-pakkene. Hva skiller egentlig disse?
JFace er et verktøysett for brukergrensesnitt som inneholder hjelpeklasser for utvikling av brukergrensesnittfunksjoner, som det kan være kjedelig å implementere. JFace opererer over nivået for det grunnleggende widget-systemet. Det inneholder klasser for håndtering av vanlige programmeringsoppgaver for brukergrensesnitt:
Med JFace får du frihet til å fokusere på implementering av en spesifikk plugin-funksjon i stedet for å fokusere på det underliggende widget-systemet eller løse problemer som oppstår i de fleste brukergrensesnittapplikasjoner.
Hvor slutter JFace og hvor begynner arbeidsbenken? Av og til er ikke skillet så tydelig. Generelt er JFace-APIene (fra org.eclipse.jface.*-pakkene) uavhengig av arbeidsbenkens utvidelsespunkter og APIer. Et JFace-program kan derfor skrives uten noen form for arbeidsbenkkode.
Arbeidsbenken bruker JFace, men forsøker å begrense bruken når det er mulig. For eksempel er modellen for arbeidsbenkdelen (IWorkbenchPart) utformet på en slik måte at den ikke er avhengig av JFace. Vi har tidligere sett at visninger og redigeringsprogrammer kan implementeres ved hjelp av SWT-widgeter direkte, uten bruk av JFace-klasser. Arbeidsbenken forsøker å være "JFace-nøytral" når det er mulig, slik at programmerere kan velge de delene av JFace som er nyttige for dem. I praksis bruker arbeidsbenken JFace til mye av implementeringen og det er referanser til JFace-typer i API-definisjoner. (For eksempel vises JFace-grensesnittene for IMenuManager, IToolBarManager og IStatusLineManager som typer i arbeidsbenkens IActionBar-metoder.)
Ved bruk av JFace-API er det lurt å tenke på hvilke regler som gjelder for bruk av bakgrunnstråder. Du finner mer informasjon i Arbeidsbenken og tråder.
Skillet mellom SWT og JFace er langt klarere. SWT er ikke avhengig av JFace- eller plattformkode. En rekke av SWT-eksemplene viser hvordan du kan bygge en frittstående applikasjon.
JFaces har felles brukergrensesnittfunksjon for applikasjon over SWT-biblioteket. JFace forsøker ikke å "skjule" SWT eller erstatte den funksjonen den har. Det oppgir klasser og grensesnitt som håndterer en rekke vanlige oppgaver som er knyttet til programmering av et dynamisk brukergrensesnitt ved hjelp av SWT.
Forholdet mellom JFace og SWT forstås best ved å se på visningsprogrammer og forholdet til SWT-widgeter.