- SWT está contenido dentro de los paquetes
org.eclipse.<algunos_paquetes>, con lo que dependemos del uso de estos
paquetes, que son de eclipse. Si eclipse decidiera "privatizarlos", no nos
queda otra que mudarnos (o pagar).
    - SWT trata de "imitar" la interfaz del S.O. donde es corrido, lo cual
tiene sus ventajas (se tiene una aplicación que se mimetiza con el resto), y
sus desventajas (se pierde portabilidad). Swing, en cambio, forma parte de
las JFC (Java Foundation Classes), con lo cual es dependiente sólo del
lenguaje y tecnología Java, lo cual nos asegura portabilidad.
    - Para correr aplicaciones basadas en SWT, necesitamos, no sólo eclipse,
sino otras herramientas, como por ejemplo (en GNU/Linux, y para eclipse 3.0)
Pango 1.2.1 (utilizado para el entorno Gnome). Entonces, tendremos
aplicaciones con el "look 'n' feel" de Gnome. Si bien esto puede ser bueno
según el punto (2), con Swing nosotros nos olvidamos completamente del
sistema destino, ya que, programando una sola vez, ejecutaremos el sistema
en donde sea que esté la JVM.
    - Con SWT, dependemos el IDE eclipse. ¿Qué pasaría si no quisiéramos
utilizarlo? No podemos usar SWT. Swing es parte de Java, con lo que es
independiente del IDE.
Hasta el más sencillo de los componentes Swing tiene capacidades que
van más allá de lo que ofrece su contraparte. Por ejemplo.
- Los botones y las etiquetas Swing pueden mostrar imágenes en lugar
de o además del texto.
- Se pueden añadir o modificar fácilmente los bordes dibujados
alrededor de casi cualquier componente Swing. Por ejemplo, es fácil
poner una caja alrededor de un contenedor o una etiqueta.
- Se puede modificar fácilmente el comportamiento o la apariencia de
un componente Swing llamando a métodos o creando una subclase.
- Los componentes Swing no tienen porque ser rectangulares. Por
ejemplo, los botones pueden ser redondos.
- Las tecnologías asistivas como los lectores de pantallas pueden
fácilmente obtener información desde los componentes Swing. Por
ejemplo, una herramienta puede fácilmente obtener el texto mostrado en
un botón o en una etiqueta.
- Podemos indentificar los componentes Swing porque sus nombres
empiezan con J. Por ejemplo, la clase buttón de Swing se llama JButton
y los componentes Swing están en el paquete javax.swing.
- La mayor diferencia es que los componentes Swing están implementados
sin nada de
código nativo. Esto significa que los componentes Swing pueden tener
más funcionalidad, porque no están restringidos al denominador común
-- las características presentes en cada plataforma.
Espero que les sirva... saludos. Fernando M. Gutierrez