Vi har sett att arbetsmiljön definierar utökningspunkter för insticksprogram för att lägga till användargränssnittsfunktioner på plattformen. Många av dessa utökningspunkter, speciellt utökningspunkter för guider, implementeras med hjälp av klasser i org.eclipse.jface.*-paket. Vad är skillnaden?
JFace är en verktygsuppsättning för användargränssnitt som tillhandahåller hjälpklasser för utveckling av användargränssnittsfunktioner som kan vara långtråkiga att implementera. JFace fungerar ovanför nivån med ett ursprungligt gränssnittskontrollsystem. Det innehåller klasser för hantering av gemensamma programmeringsuppgifter för användargränssnittet:
Med JFace frigörs du så att du kan fokusera på implementationen av ditt specifika insticksprograms funktion, snarare än att fokusera på underliggande gränssnittskontrollsystem eller på att lösa problem som är gemensamma med de flesta användargränssnittstillämpningar.
Var slutar JFace och var börjar arbetsmiljön? Ibland är gränserna inte så tydliga. I allmänhet är JFace-API:er (från paketen org.eclipse.jface.*) oberoende av arbetsmiljöns utökningspunkter och API:er. Det är möjligt att ett JFace-program kan skrivas utan att använda någon arbetsmiljökod över huvud taget.
Arbetsmiljön använder JFace men försöker minska beroenden där så är möjligt. Arbetsmiljöns delmodell(IWorkbenchPart) har t.ex. utformats för att vara oberoende av JFace. Vi såg tidigare att vyer och redigerare kan implementeras med hjälp av SWT-gränssnittskontroller direkt, utan att använda några JFace-klasser. Arbetsmiljön försöker vara "JFace-neutral", där det är möjligt, så att programmerare kan använda de delar av JFace de tycker är bra. I praktiken använder arbetsmiljön JFace för mycket av sin implementation och det finns referenser till JFace-typer i API-definitioner. (Exempelvis JFace-gränssnitten för IMenuManager, IToolBarManager och IStatusLineManager visas som typer i arbetsmiljöns IActionBar-metoder.)
När du använder JFace-APIt är det bra att komma ihåg engagemangsreglerna för användning av bakgrundstrådar. I avsnittet Arbetsmiljö och trådar finns mer information.
Skiljelinjen mellan SWT och JFace är mycket renare. SWT är inte alls beroende av någon JFace- eller plattformskod. Många av SWT-exemplen visar hur du kan skapa en fristående tillämpning.
JFace har utformats för att tillhandahålla vanliga tillämpningsfunktioner för användargränssnitt, ovanpå SWT-biblioteket. JFace försöker inte "dölja" SWT eller ersätta SWT:s funktion. Det tillhandahåller klasser och gränssnitt som hanterar många av de vanliga uppgifter som associeras till programmering av ett dynamiskt användargränssnitt med hjälp av SWT.
Relationen mellan JFace och SWT visas tydligast genom att titta på visningsprogram och deras relationer till SWT-gränssnittskontroller.