Viděli jsme, že pracovní plocha definuje body rozšíření, aby moduly plug-in mohly vkládat funkce uživatelského rozhraní do platformy. Mnoho z těchto bodů rozšíření, zejména rozšíření v podobě průvodců, je implementováno pomocí tříd v balíčcích org.eclipse.jface.*. Jaké to má přednosti?
JFace je sada nástrojů uživatelského rozhraní, která poskytuje pomocné třídy pro vývoj funkcí uživatelského rozhraní, jejichž implementace může být pracná. JFace operuje nad úrovní systému přímých prvků widget. Poskytuje třídy ke zpracování běžných úloh programování uživatelského rozhraní:
JFace vám dává volnost soustředit se na implementaci specifických funkcí modulů plug-in bez nutnosti zabývat se základním systémem prvků widget nebo řešit problémy, které jsou běžné téměř v každé aplikaci uživatelského rozhraní.
Kde končí JFace a začíná pracovní plocha? Někdy nejsou hranice zřejmé. Obecně lze říci, že rozhraní API modulu JFace (z balíčků org.eclipse.jface.*) jsou nezávislá na bodech rozšíření a rozhraních API pracovní plochy. Případně by program JFace mohl být napsán úplně bez použití jakéhokoliv kódu pracovní plochy.
Pracovní plocha využívá rámce JFace, ale snaží se omezit vzájemnou závislost, kdekoliv je to možné. Například část pracovní plochy (IWorkbenchPart) je navržena jako nezávislá na JFace. Viděli jsme již dříve, že prohlížeče a editory mohou být implementovány pomocí prvků widget SWT přímo bez použití jakýchkoliv tříd JFace. Pracovní plocha se snaží zachovat "JFace neutrálním", kdykoliv je to možné, a umožnit tak programátorům použití částí rámce JFace tam, kde to shledají užitečným. V praxi modul workbench používá JFace pro většinu své implementace a v definicích rozhraní API jsou reference na typy JFace. (Například rozhraní JFace pro IMenuManager, IToolBarManager, a IStatusLineManager se zobrazují jako typy v metodách IActionBarmodulu pracovní plochy.)
Při použití rozhraní API JFace je vhodným přístupem respektování pravidel používání vláken běžících na pozadí. Další informace viz Modul Workbench a vlákna.
Hranice mezi SWT a JFace jsou mnohem zřetelnější. SWT vůbec nezávisí na žádném modulu JFace ani kódu platformy. Množství příkladů SWT ukazuje, jak lze sestavit samostatnou aplikaci.
JFace je navržen tak, aby poskytoval běžnou funkci aplikace uživatelského rozhraní nad knihovnou SWT. JFace se nepokouší "skrýt" SWT ani nahradit jeho funkce. Poskytuje třídy a rozhraní, které zpracovávají množství běžných úloh spojených s programováním dynamického uživatelského rozhraní pomocí SWT.
Vztah mezi JFace a SWT se výrazněji ukáže, když se podíváte na prohlížeče a jejich vztah k prvkům widget SWT.