O workbench define os pontos de extensão de plug-ins para contribuir com a função UI para a plataforma. Muitos desses pontos de extensão, particularmente extensões de assistentes, são implementadas utilizando classes nos pacotes org.eclipse.jface.*. Qual é a diferença?
O JFace é um kit de ferramentas da UI que fornece classes de auxiliares para o desenvolvimento dos recursos da UI que podem ser cansativos de implementar. O JFace opera sobre o nível de um sistema widget não processado. Ele fornece classes para tratamento de tarefas comuns de programação da UI:
O JFace libera-o para concentrar-se na implementação da função específica do plug-in, em vez de focalizar o sistema widget subjacentes ou resolver problemas que são comuns em quase todos os aplicativos da UI.
Onde termina o JFace e começa o workbench? Algumas vezes os limites não são tão obvias. Em geral, as APIs do JFace (dos pacotes org.eclipse.jface.*) são implementados nos pontos de extensão e nas APIs do workbench. Compreensivelmente, um programa JFace poderia ser gravado sem utilizar qualquer código de workbench.
O workbench utiliza o JFace, mas tenta reduzir as dependências onde for possível. Por exemplo, o gabarito de peças do workbench (IWorkbenchPart) é projetado para ser independente do JFace. Vimos anteriormente que as exibições e editores podem ser implementados utilizando SWT widgets diretamente sem utilizar qualquer classe JFace. O workbench tenta permanecer "JFace neutro" onde for possível, permitindo que os programadores utilizem as peças do JFace onde acharem úteis. Na prática, o workbench utiliza o JFace para mais que sua implementação e há referências aos tipos de JFace nas definições API. (Por exemplo as interfaces JFace IMenuManager, IToolBarManager, e IStatusLineManager são mostradas como tipos nos métodos do workbench IActionBar.)
As linhas entre o SWT e o JFace são muito claras. O SWT não depende de qualquer código de JFace ou de plataforma. Muitos dos exemplos SWT mostram como é possível construir um aplicativo independente.
O JFace é projetado para fornecer funções da UI de aplicativos comum na parte superior da biblioteca SWT. O JFace não tenta "ocultar" o SWT ou substituir sua função. Ele fornece classes e interfaces que identificam muitas das tarefas comuns associadas à programação de uma UI dinâmica utilizando SWT.
A relação entre o JFace e o SWT é demonstrada mais claramente observando os visualizadores e suas relações com os SWT widgets.