Desarrollo de aplicaciones multiplaforma en Linux: Aplicaciones en el escritorio con Java/SWT | ||
---|---|---|
Anterior | Capítulo 3. Evolución de Java Toolkits | Siguiente |
Este Toolkit nace en el contexto del proyecto Eclipse. Este projecto pretende ser un framework para construir IDE's (Integrated Development Environment) para distintos tipos de herramientas, basado en una arquitectura de plugins. Eclipse fue desarrollado inicialmente por IBM y se liberó posteriormente bajo licencia CPL.
El toolkit SWT surge como necesidad de cubrir los problemas de SWING, a nivel de dieño fundamental. A pesar de que se pueden usar look&feel's similares a un entorno nativo, estos siguen siendo simulados por SWING, consumiendo recuros innecesarios, ralentizando la interfaz y provocando "ruido" en cuanto a consistencia de interfaz se refiere.
El objetivo de SWT es crear un toolkit que sea nativo y a la vez portable. Estas dos características que parecen ser imposibles de cumplir en forma conjunta, son posibles gracias a la API JNI : Java Native Interface. JNI permite que una aplicación Java interactue con código nativo de la plataforma, por ejemplo bibliotecs .so en Linux.
A ojos del desarrollador, SWT es una API que representa a un toolkit multiplataforma, en donde encuentra toda la funcionalidad típica de los toolkits. Desde el punto de vista de la implementación de SWT, éste es una capa muy delgada entre Java y las librerias nativas del toolkit de la plataforma.
SWT siempre trata de hacer un mapeo uno a uno entre el toolkit nativo y el abstracto. Cuando una característica no está disponible en el toolkit nativo, SWT lo emula.
Existen varios ports de SWT para las plataformas más populares como:
Linux/GTK+ 2.x
Linux/Motif
Windows/MFC
Solaris, AIX, HP-UX / Motif
QNX/Photon
A diferencia de SWING, el toolkit SWT ocupa muy pocos recursos, es notablemente más veloz y se integra perfectamente con el toolkit nativo. Podemos tener, por ejemplo, una aplicacion Java corriendo en Linux con una interfaz gráfica GTK+. Esta misma aplicacion, sin cambios puede correr en un entorno Windows pero usará la interfaz nativa Win32.