How are Swing and AWT be differentiated?

Answer Posted / sanjeev katoch

When developing a Java program it is important to select
the appropriate Java Graphical User Interface (GUI)
components. There are two basic sets of components that you
will most likely build your Java programs with. These two
groups of components are called the Abstract Window Toolkit
(AWT) and Swing. Both of these groups of components are
part of the Java Foundation Classes (JFC).

An Overview of the AWT
AWT stands for Abstract Window ToolKit. The Abstract Window
Toolkit supports GUI Java programming. It is a portable GUI
library for stand-alone applications and/or applets. The
Abstract Window Toolkit provides the connection between
your application and the native GUI. The AWT provides a
high level of abstraction for your Java program since it
hides you from the underlying details of the GUI your
program will be running on.

AWT features include:


A rich set of user interface components.
A robust event-handling model.
Graphics and imaging tools, including shape, color, and
font classes.
Layout managers, for flexible window layouts that don't
depend on a particular window size or screen resolution.
Data transfer classes, for cut-and-paste through the native
platform clipboard.
The AWT components depend on native code counterparts
(called peers) to handle their functionality. Thus, these
components are often called "heavyweight" components.

An Overview of Swing
Swing implements a set of GUI components that build on AWT
technology and provide a pluggable look and feel. Swing is
implemented entirely in the Java programming language, and
is based on the JDK 1.1 Lightweight UI Framework.

Swing features include:

All the features of AWT.
100% Pure Java certified versions of the existing AWT
component set (Button, Scrollbar, Label, etc.).
A rich set of higher-level components (such as tree view,
list box, and tabbed panes).
Pure Java design, no reliance on peers.
Pluggable Look and Feel.
Swing components do not depend on peers to handle their
functionality. Thus, these components are often
called "lightweight" components.

AWT vs. Swing
There are, of course, both pros and cons to using either
set of components from the JFC in your Java applications.
Here is a summary:



------------------------------------------------------------
--------------------

AWT:
Pros

Speed: use of native peers speeds component performance.
Applet Portability: most Web browsers support AWT classes
so AWT applets can run without the Java plugin.
Look and Feel: AWT components more closely reflect the look
and feel of the OS they run on.
Cons
Portability: use of native peers creates platform specific
limitations. Some components may not function at all on
some platforms.
Third Party Development: the majority of component makers,
including Borland and Sun, base new component development
on Swing components. There is a much smaller set of AWT
components available, thus placing the burden on the
programmer to create his or her own AWT-based components.
Features: AWT components do not support features like icons
and tool-tips.


------------------------------------------------------------
--------------------

Swing:
Pros

Portability: Pure Java design provides for fewer platform
specific limitations.
Behavior: Pure Java design allows for a greater range of
behavior for Swing components since they are not limited by
the native peers that AWT uses.
Features: Swing supports a wider range of features like
icons and pop-up tool-tips for components.
Vendor Support: Swing development is more active. Sun puts
much more energy into making Swing robust.
Look and Feel: The pluggable look and feel lets you design
a single set of GUI components that can automatically have
the look and feel of any OS platform (Microsoft Windows,
Solaris, Macintosh, etc.). It also makes it easier to make
global changes to your Java programs that provide greater
accessibility (like picking a hi-contrast color scheme or
changing all the fonts in all dialogs, etc.).
Cons
Applet Portability: Most Web browsers do not include the
Swing classes, so the Java plugin must be used.
Performance: Swing components are generally slower and
buggier than AWT, due to both the fact that they are pure
Java and to video issues on various platforms. Since Swing
components handle their own painting (rather than using
native API's like DirectX on Windows) you may run into
graphical glitches.
Look and Feel: Even when Swing components are set to use
the look and feel of the OS they are run on, they may not
look like their native counterparts.

------------------------------------------------------------
--------------------

In general, AWT components are appropriate for simple
applet development or development that targets a specific
platform (i.e. the Java program will run on only one
platform).

For most any other Java GUI development you will want to
use Swing components. Also note that the Borland value-
added components included with JBuilder, like dbSwing and
JBCL, are based on Swing components so if you wish to use
these components you will want to base your development on
Swing.

Is This Answer Correct ?    6 Yes 1 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

What is swing?

590


When we should go for codebase in applet?

611


What is java swing used for?

528


What is jfc swing in java?

518


What is the purpose of serialization in swings?

540






What is the purpose of transferhandler class?

551


What are swing components in java?

473


What is sling swing?

530


What does javax swing do?

534


What is java swing gui?

464


What is the design pattern that java uses for all swing components ?

501


What is difference between swing and awt?

480


Which method is used for setting security in applets?

587


What are the differences between Swing and AWT?

563


What is java awt and swing?

600