El Juego de herramientas de widget estándar (SWT) es un juego de herramientas de widget para desarrolladores de Java que proporciona una API portátil y una sólida integración con la plataforma de la GUI del OS nativo subyacente.
La mayoría de las tareas de programación de bajo nivel de la UI se manejan en capas superiores del plataforma Eclipse. La marcación del plugin.xml para contribuciones de la UI especifica el contenido de la barra de menús y de herramientas sin la necesidad de programación de SWT. Los visores y las acciones de JFace implementan interacciones comunes entre aplicaciones y widgets. Sin embargo, es importante conocer la arquitectura y el concepto del diseño subyacentes de SWT para entender cómo funciona el resto de la plataforma.
Un aspecto común en el diseño del juego de herramientas de widget es la relación ente juegos de herramientas portátiles e integración de la plataforma. El AWT (Juego de herramientas de widget avanzado) de Java proporciona widgets integrados en la plataforma para widgets de bajo nivel, como listas, texto y botones, pero no proporciona acceso a componentes de nivel superior de la plataforma, como árboles o texto enriquecido. Esto impone a los desarrolladores de aplicaciones una situación que podría calificarse de "mínimo denominador común": sólo pueden utilizar widgets que están disponibles en todas las plataformas.
El juego de herramientas Swing intenta solucionar este problema con implementaciones no nativas de widgets de alto nivel, como árboles, tablas y texto. Esto mejora las funciones, pero las aplicaciones desarrolladas en Swing mantienen sus diferencias. Las capas de emulación de aspecto de la plataforma ayudan a las aplicaciones a parecerse a la plataforma, pero la interacción del usuario es lo suficientemente distinta para no pasar desapercibida. Esto dificulta la utilización de juegos de herramientas emulados para construir aplicaciones que compiten con aplicaciones empaquetadas desarrolladas específicamente para la plataforma de un OS concreto.
SWT soluciona este problema definiendo una API portátil común que se incluye en todas las plataformas soportadas e implementando dicha API en cada plataforma utilizando widgets nativos siempre que es posible. Esto permite al juego de herramientas reflejar inmediatamente cualquier cambio en el aspecto de la GUI de OS subyacente, a la vez que mantiene un modelo de programación coherente en todas las plataformas.
SWT resuelve el problema de "mínimo denominador común" de distintas maneras.
La integración de una plataforma no es un problema de aspecto estrictamente. Una integración sólida incluye la posibilidad de interactuar con características de sobremesa nativas, como arrastrar y soltar, integración con aplicaciones de sobremesa del OS y utilización de componentes desarrollados con modelos de componentes del OS, como Win32 ActiveX.
El soporte de ActiveX de SWT se trata en el artículo Soporte de ActiveX en SWT.
El código mismo proporciona coherencia al ofrecer una implementación que resulta familiar al desarrollador del OS nativo. En lugar de ocultar diferencias del OS en código C nativo o intentar construir capas portátiles y no portátiles en la implementación de Java, SWT proporciona implementaciones diferentes en Java para cada plataforma.
Una norma importante de implementación es que los nativos en C se correlacionan individualmente con llamadas al OS. Un programador de Windows deberá reconocer inmediatamente la implementación del juego de herramientas de SWT en Windows ya que utiliza nativos que se correlacionan directamente con las llamadas del sistema utilizadas en C. Ninguno de los aspectos "más sorprendentes de la plataforma" se oculta en código C. Un desarrollador de plataformas puede inspeccionar el código y saber exactamente qué llamadas de plataforma ha ejecutado el juego de herramientas. Esto simplifica la depuración de manera satisfactoria. Si se produce una anomalía al llamar a métodos nativos, al llamar a la API de la plataforma con los mismos parámetros del código C se producirá la misma anomalía. (Encontrará este tema más desarrollado enEstrategia de implementación de SWT para nativos Java.)