Está en la página 1de 7

¿Cuál es la diferencia entre AWT y Java Swing?

AWT Java Swing


AWT permite hacer interfaces gráficas mediante
El paquete Swing es parte de la JFC (Java Foundation
artefactos de interacción con el usuario, como
Classes) en la plataforma Java. La JFC provee facilidades
botones, menús, texto, botones para selección,
para ayudar a la gente a construir GUIs. Swing abarca
barras de deslizamiento, ventanas de diálogo,
componentes como botones, tablas, marcos, etc...
selectores de archivos, etc.
Las componentes de Swing utilizan la infraestructura de
Cada una de las componentes de una ventana en
AWT, incluyendo el modelo de eventos AWT, el cual
AWT se representa mediante uno o más objetos de
rige cómo una componente reacciona a eventos tales
la aplicación. La clase de los contenedores sirve
como, eventos de teclado, mouse, etc... Es por esto, que
para crear áreas en la ventana cuyo único fin es
la mayoría de los programas Swing necesitan importar
colocar otras componentes en su interior.
dos paquetes AWT: java.awt.* y java.awt.event.*.
El argumento que recibe el constructor es la
Cada vez que el usuario interactúa con la aplicación se
etiqueta que se colocará sobre el botón. El aspecto
gatilla un evento, para que una componente determinada
y comportamiento de este botón es dependiente de
reaccione frente a un evento, debe poseer un
la plataforma. La aplicación se basa sólo en que
"escuchador" con, al menos, un método determinado que
será informada cuando el botón sea presionado por
se ejecutará al escuchar un evento en particular.
el usuario para ejecutar alguna acción.

Entre AWT y Java Swing hay gran diferencia, pero al mismo tiempo hay grandes aspectos en común, ambos nos sirven
para realizar artefactos gráficos y utilizan prácticamente las mismas funciones y componentes, pero su diferencia radica
en que principalmente Java Swing es más avanzado y sus componentes se desarrollan de mejor manera, ademas desde
AWT necesitamos tener una plataforma especifica, mientras que desde Java Swing podemos utilizarlo y visualizarlo
desde diferentes lugares. Para la programación es muy importante conocer éste tipo de herramientas, pues son de gran
ayuda.

Manejo de la interfaz de usuario


En el mundo Java existen básicamente cuatro alternativas para el manejo de la interfaz de usuario en
ambientes de ventanas (GUI):

         Abstract Windowing Toolkit (AWT)

         Java Foundation Classes (JFC o Swing)

         Standard Widget Toolkit (SWT)

         Windows Foundation Classes (WFC)

La primer alternativa es la nativa de Java; la misma existe desde la primer versión, y se denomina AWT
(Abstract Windowing Toolkit).

La segunda alternativa consiste en las JFC (Java Foundation Classes) las cuales son un conjunto de
clases que desarrolló posteriormente Sun Microsystems.

 
La tercer alternativa es SWT (Standard Widget Toolkit), desarrollada por IBM.

La cuarta alternativa se refiere a las WFC (Windows Foundation Classes) que fueron desarrolladas por
Microsoft y sólo funcionan en Plataformas Windows.

A continuación se incluye un cuadro con las  ventajas y desventajas de cada una:

  AWT JFC SWT WFC

Performance Regular Regular  Buena Buena

Plataformas soportadas Todas Todas  Todas Windows

Calidad de la multi- Mala Buena  Mala No aplicable


plataforma (¿se ve igual en
todas las plataformas?)

¿GeneXus genera con esta No Si Si,  actualmente Si


interfaz?
solo Windows.

Facilidad de uso (¿hay No aplicable Simple  Simple Simple


consideraciones especiales
que deben tenerse en
cuenta para generar con
esta interfaz desde
GeneXus?)

AWT es la alternativa más antigua, y se utilizó en GeneXus hasta la versión 7.5. Actualmente los
desarrolladores Java casi no la utilizan pues su principal inconveniente es que las pantallas no se
visualizan igual en diferentes plataformas. Como consecuencia, la capacidad de GeneXus de trabajar con
AWT para el diseño de pantallas tampoco era buena. Por ejemplo, en Windows 95 y utilizando el
ambiente de Sun, los controles de edit tenían un margen a cada lado del texto, por lo que si en GeneXus
se especificaba un edit de largo 5 caracteres, con AWT se veían 3. Esto no pasaba en Windows NT.

Otro inconveniente era que el combobox no podía tener un alto menor que un mínimo fijado por AWT.
Por ello, si e GeneXus se ponía un combobox en un grid, al obtener el foco, el control quedaba más alto
que su fila, superponiéndose con la fila de abajo.

Por este motivo, a partir de la versión 8.0, para la ejecución con Sun se puede utilizar JFC o SWT, siendo esta ultima
la recomendada.

JFC no presenta este tipo de problema debido a que el dibujo de los controles es realizado por la
“máquina virtual” que corresponda en el momento de la ejecución. De este modo, una ventana con sus
controles, se ve igual en todas las plataformas. Por ello, la performance de JFC es algo menor a la de
AWT.

 
SWT es un conjunto de herramientas open-source, totalmente dependiente de la interfaz gráfica de la
plataforma correspondiente. SWT utiliza los widgets del sistema en que se ejecuta (los widgets son
componentes gráficos para un control, por ejemplo para un botón). La ventaja respecto a JFC es que se
ejecuta con la apariencia y performance de las aplicaciones nativas de la plataforma. La desventaja es su
falta de portabilidad. En cuanto a AWT, la principal diferencia es que SWT aprovecha widgets de la
plataforma de mayor complejidad. Si en alguna plataforma no existe algún widget que sí es común en
otras, SWT da una implementación propia de ese en particular, como hace JFC.

WFC por su parte, son clases desarrolladas por Microsoft, y si se opta por esta alternativa,    es necesario
ejecutar las aplicaciones con el Java de Microsoft. WFC brinda rapidez, sin embargo no es
multiplataforma, sino que sólo sirve para ambiente Windows. Además, Microsoft ya no trabaja más en su
desarrollo.

Contraseña: *

Iniciar sesión

 Crear cuenta nueva


 Solicitar nueva contraseña

Navegación
o Blogs
 Categorias
 Contenido
 Foros de Discusión
 Encuestas
 Tips
 Usuarios
 Envíos recientes

Temas nuevos
 Formulario con grupo JTexfield como el de mysql
 Programador Java
 Intentando aleatorizar las alternativas de un cuestionario
more

En línea
En este momento hay 0 usuarios y 38 invitados en línea.

Comentarios recientes
 Sun tuvo una excelente idea
hace 2 semanas 2 días
 Y técnicamente hablando como
hace 2 semanas 2 días
 La primera opción.
hace 5 semanas 13 horas
 Ustedes disculpen
hace 5 semanas 13 horas
 ya la hice gracias
hace 5 semanas 4 días
 Video
hace 6 semanas 2 días
 Re: bromita
hace 10 semanas 9 horas
 CHALE
hace 10 semanas 4 días
 uso de threadLocal en lugar de synchronized
hace 12 semanas 2 días
 Y te puedes conectar al
hace 12 semanas 2 días

Encuesta
¿Qué lenguaje alternativo para la JVM te llama más la atención?:

 Groovy

 Scala

 Clojure

 JRuby

 Jython

 Otro... (menciona cuál)

Votar

Contenido popular
Hoy:
 Refactorización: mejorando el diseño del código existente
 Mi computadora no abre los archivos .jar
 Como empezar a hacer aplicaciones de escritorio
 Realtime sin websockets
 Google Books Downloader

Siempre:
 Estructura de datos java (Listas simplemente enlazadas) Primer aporte
 Como programar en java Deitel & Deitel 7ma Edicion
 Cargar una imagen en un JPanel en netbeans
 como generar un archivo txt en java
 Problema para comparar valores null, vacio o "" de un h:inputtext

Últimas impresiones:
 JavaFX: Modo Pantalla Completa
 Spring error en pom.xml
 Clases envolventes - Wrapper classes
 Payara Hello-World
 reducir peso imagen

Usando SWT para crear interfaces gráficas (GUI)


Submitted by jb on Mié, 08/15/2007 - 15:37 
 Java Standard Edition

¿Qué es SWT?
SWT es un framework para crear interfaces gráficas en Java (como Swing o Awt) que crea a través de JNI (Java
Native Interface) interfaces gráficas nativas del Sistema Operativo en donde ejecutemos nuestra aplicación SWT. Esto
quiere decir que con el mismo código visualizaremos en cada Sistema Operativo nuestras ventanas como si hubieran
sido creadas para ese SO en específico.
Por ejemplo:
Windows

Linux/Gtk

Mac OS X

Motif
Photon

Ahora bien, enumeraré las que a mi parecer son las más visibles ventajas y desventajas de este framework.
Ventajas:

 * Ya que crea nativamente la GUI dependiendo del SO, es más rápido que Swing
 * Consume menos recursos
 * La interfaz gráfica se verá como las demás aplicaciones de tu SO
 * Está en constante desarrollo

Continúa...
Desventajas:

 Muy escasa documentación


 Ya que SWT fue creado por la Fundación Eclipse y pensada para el desarrollo de Eclipse IDE, hay controles o
widgets que no consideraron ya que Eclipse no los ocupa, aunque sigue en desarrollo.
 Se tiene que agregar la biblioteca al proyecto a desarrollar, no viene por default en las librerías de Java

Algunas aplicaciones creadas con SWT:

 Eclipse IDE (Quizá el más completo IDE para desarrollo en Java)


 Azureus (Uno de los más conocidos clientes torrent)

Bien, ahora comencemos:


- Creemos un nuevo proyecto de Java en nuestro IDE preferido (para este tuto utilizaremos Eclipse IDE). El proyecto
en este ejemplo se llamará ‘tests’
- Descarguemos SWT de http://www.eclipse.org/swt/ y lo dejamos dentro de nuestro proyecto..
- Importamos SWT al proyecto, en Eclipse IDE es en File/Import..

- Luego en General elegimos ‘Existing proyect into Workspace’

- Luego seleccionamos el zip que bajamos con swt y el nombre del proyecto ‘org.eclipse.swt’

- Ya tenemos SWT dentro de nuestro Workspace, ahora tenemos que agregarlo como dependencia de nuestro
proyecto ‘tests’, entonces vamos a las propiedades de ‘tests’ (click derecho en tests/properties), luego damos click en
Java Build Path, vamos a la pestaña de Projects y le damos ‘add..’ seleccionamos ‘org.eclipse.swt’, y luego OK y de
nuevo OK.

- Bien, ya tenemos nuestro proyecto listo para implementar SWT, ahora debemos saber algunos conocimientos
teóricos.
SWT se compone de principales elementos, que interactúan entre ellos para lograr la interfaz nativa que tanto le
caracteriza:

 JNI. Java Native Interface, es el primer y más bajo nivel, que interactúa directamente con el Sistema
Operativo en el que estemos. En claro que cada SO necesita diferente configuración y librerías, pero JNI nos
simplifica el trabajo para que todo lo escribamos de una sola manera y él se encarga de lo demás, así
tenemos cumplida la visión de Java ‘write Once, run anywhere’
 Display. Esta clase de SWT es la responsable de traducir o comunicar la Clase Shell con el JNI.
 Shell. No chicos, no es ninguna shell que se pueda rootear! Shell es otra clase de SWT, que representa una
ventana y quien es la responsable de administrar los widgets (componentes) que tendremos en la misma.
Tendremos una instancia de la clase Shell por cada ventana en nuestro proyecto. Para poder instanciar la
clase Shell debemos hacer referencia a un Display anteriormente instanciado.

Como ya habíamos mencionado, ’shell’ es nuestra ventana, así que con ’setText’ definimos su título, con ’setVisible’ si
queremos que sea mostrada, con ’setSize’ el tamaño y con ‘open’ la iniciamos.
();
}
Este bucle while es muy importante, ya que es nuestro ‘manejador de eventos’, lo que hace es que una vez mostrada
la ventana y si la misma no está ejecutando algún evento lanza un bucle que deja la ventana en espera (sleep) de
otro evento venidero, así que está constantemente en escucha de algún otro evento que se dispare.
display.dispose();
por último, liberamos la aplicación con dispose(), quien finaliza ‘display’ y todos los shells que ‘display’ contiene, esto
solo ocurre cuando la ventana ha sido cerrada, cuando damos click en cerrar la ventana automáticamente el ciclo
while no se cumple y salta al siguiente paso ‘display.dispose()’
Resultado:

Utilizando Widgets.
Bueno, iba a explicar detalladamente como poner widgets en layouts y algunos tips más, pero desde ayer interrumpí
este tuto por cuestiones de trabajo, así que hice esta pequeña aplicación con una caja de texto, un botón y un listener
que ejecutan una acción..
Aqui está el código, por favor examínenlo y vean la manera de implementar los widgets en el Grid(layout), y también
chequen la acción que lleva a cabo el listener que le puse al botón.
Lo que muestra al iniciar la aplicación es esta ventanita:

y al dar click el listener ejecuta esta acción:

También podría gustarte