Eerder is besproken dat de workbench extensiepunten definieert voor plugins die gebruikersinterfacefuncties leveren aan het platform. Veel van deze extensiepunten, in het bijzonder de wizardextensies, worden geïmplementeerd met behulp van de klassen in de org.eclipse.jface.*-pakketten. Wat is het verschil?
JFace is een UI-toolkit die Helperklassen levert voor het ontwikkelen van gebruikersinterfacefeatures die mogelijk lastig te implementeren zijn. JFace functioneert boven het niveau van het onbewerkte-widgetsysteem. Het omvat de klassen voor het afhandelen van de gemeenschappelijke programmeertaken van de gebruikersinterface:
Door middel van JFace bent u vrij om u te kunnen richten op de implementatie van uw specifieke pluginfunctie in plaats van dat u zich hoeft te richten op het onderliggende widgetsysteem of het oplossen van problemen die veel voorkomen in de meeste gebruikersinterfacetoepassingen.
Waar eindigt JFace en begint de workbench? In bepaalde gevallen is de grens niet zo duidelijk. In het algemeen zijn de JFace-API's (van de pakketten org.eclipse.jface.*) onafhankelijk van de workbenchextensiepunten en API's. Het is denkbaar dat een JFace-programma wordt geschreven zonder dat enige workbenchcodering wordt gebruikt.
Door de workbench wordt gebruik gemaakt van JFace maar wordt geprobeerd de dependency's waar mogelijk te verminderen. Het workbenchgedeeltemodel (IWorkbenchPart) bijvoorbeeld, is ontworpen als onafhankelijk van JFace. Eerder is besproken dat views en editors direct kunnen worden geïmplementeerd met SWT-widgets zonder dat JFace-klassen worden gebruikt. Door de workbench wordt geprobeerd indien mogelijk "JFace-neutraal" te blijven zodat programmeurs dat gedeelte van JFace kunnen gebruiken dat zij nuttig vinden. In de praktijk wordt door de workbench JFace gebruikt voor veel van de implementatie en worden verwijzingen naar JFace-typen gebruikt in de API-definities. (Bijvoorbeeld de JFace-interfaces voor IMenuManager, IToolBarManager en IStatusLineManager verschijnen als typen in de methoden van IActionBar van de workbench.)
Wanneer u JFace-API gebruikt, is het verstandig de regels voor het gebruik van achtergrondthreads in acht te nemen. Raadpleeg De workbench en threads voor meer informatie.
De grens tussen SWT en JFace is veel duidelijker. SWT is op geen enkele manier van JFace of platformcode afhankelijk. In veel van de SWT-voorbeelden kunt u zien hoe een stand-alone toepassing wordt gebouwd.
JFace is ontworpen om een gemeenschappelijke toepassingsgebruikersinterfacefunctie te leveren boven op de SWT-bibliotheek. JFace probeert niet SWT te "verbergen" of de functie van SWT te vervangen. Het levert klassen en interfaces die veel van de gemeenschappelijke taken afhandelen die te maken hebben met het programmeren van een dynamische gebruikersinterface met behulp van SWT.
Het verband tussen JFace en SWT wordt duidelijk gemaakt als u kijkt naar viewers en hun relaties met SWT-widgets.