hemos visto que el entorno de trabajo define puntos de extensión para que los conectores añadan funciones de UI a la plataforma. Muchos de estos puntos de extensión, sobre todo las extensiones de asistentes, se implementan utilizando clases de los paquetes org.eclipse.jface.*. ¿Cuál es la diferencia?
JFace es un juego de herramientas de la UI que proporciona clases ayudantes para desarrollar características de UI cuya implementación puede resultar tediosa. JFace funciona por encima del nivel de un sistema de widgets en bruto. Proporciona clases para manejar tareas comunes de programación de UI:
JFace le permite centrarse en la implementación de la función específica del conector, en lugar de hacerlo en el sistema de widgets subyacente o en la resolución de problemas comunes a casi todas las aplicaciones de la UI.
¿Dónde termina JFace y empieza el entorno de trabajo? A veces la línea que separa uno de otro no es tan obvia. En general, las API de JFace (de los paquetes org.eclipse.jface.*) son independientes de los puntos de extensión y de las API del entorno de trabajo. Probablemente, un programa JFace se podría escribir sin utilizar código del entorno de trabajo.
El entorno de trabajo utiliza JFace, pero intenta reducir las dependencias siempre que sea posible. Por ejemplo, el modelo del componente entorno de trabajo (IWorkbenchPart) está diseñado para ser independiente de JFace. Vimos anteriormente que las vistas y los editores se pueden implementar utilizando los widgets de SWT directamente sin emplear clases de JFace. El entorno de trabajo intenta permanecer "neutral con respecto a JFace" siempre que sea posible, permitiendo a los programadores utilizar los componentes de JFace que les sean de utilidad. En la práctica, el entorno de trabajo utiliza JFace para la mayor parte de su implementación y existen referencias a tipos de JFace en las definiciones de las API. (Por ejemplo, las interfaces de JFace para IMenuManager, IToolBarManager e IStatusLineManager se muestran como tipos en los métodos de la interfaz IActionBar del entorno de trabajo).
Al utilizar la API de JFace, es una buena idea tener en cuenta las reglas de compromiso para utilizar hebras de segundo plano. Consulte la sección Entorno de trabajo y hebras para obtener más información.
La línea que separa SWT y JFace es mucho más nítida. SWT no depende en absoluto del código de JFace ni del de la plataforma. Muchos de los ejemplos de SWT muestran cómo se puede construir una aplicación autónoma.
JFace está diseñado para proporcionar las funciones de UI comunes de las aplicaciones tomando como base la biblioteca de SWT. JFace no intenta "ocultar" SWT ni sustituir su función. Proporciona clases e interfaces que manejan muchas de las tareas comunes asociadas a la programación de una UI dinámica que utilice SWT.
Entenderá mejor la relación entre JFace y SWT examinando los visores y su relación con los widgets de SWT.