Home
.. Links
.. Search
.. Plugins
.. Help
.. Irc Faq

Projects
.. Platform/Faq
.. JDT/Faq/Plan
.. PDE/Faq
.. SWT/Faq
.. RCP/Faq

Tools Projects
.. CDT/Faq
.. GEF/Faq
.. EMF/Faq

Wiki Tutorials

Hosted Projects
.. MTJ
.. Google Summer Of Code 2007
.. Update Manager 2.0
.. EasyEclipse
.. Stylebase for Eclipse

Archives

Why SWT


Here is the general answer of IBM.
You can also read the following discussion caught in the newsgroup.

Why Swt?

This question has been asked and answered dozens of times in this newsgroup,
so you should review the newsgroup archives first. The short answer to your
question is that at the time IBM started working on the Eclipse project,
AWT/Swing was not a viable choice for building an IDE. It was dog slow,
buggy as hell, memory intensive, with fairly poor emulation of the native
platform look and feels.

> As far as I can see, there are three major arguments made:
> 1) Swing performance is not acceptable
> 2) Swing forces a compromise in terms of "native" look of applications
> 3) Swing forces a "least common denominator" approach

For most of the time that Eclipse was under development, all of the above
were very true. It has only been a very recent development (~JDK 1.4) that
Swing has gotten fast enough to be acceptable. The look and feel emulations
built into Swing are still lacking in terms of platform fidelity (although
this is mitigated somewhat by the existence of high-quality 3rd party Swing
look and feels).

> 1) Performance
> Certainly, Swing performance in early versions was less than satisfactory.

Well, yeah. When exactly do you think that IBM made the decision to build
SWT? This was not exactly a recent development. It wasn't as if IBM just
woke up and said "screw Sun; let's build an alternative to Swing". IBM tried
to use Swing when they started the project, but it just didn't cut it.
Fortunately, SWT was the result and still stands as a good choice today.
Java needs a good, high-quality native widget UI framework.

> I would argue that SWT introduces as much "personality" to an
> application as Swing does - while several SWT widgets look more like
Windows
> widgets, eclipse decidedly implements semantics and looks that are very
> particular to it, and not Windows at all.

You can build very nice native apps indistinguishable from those built with
other environments. SWT (and JFace) also support some additional, unique
components that you can use or not as you see fit.

> And at least with 1.4, I can't find Swing slow in terms of drawing at all.

Had IBM waited for JDK 1.4 to come along, Eclipse would still be a couple of
years away from delivery at this point.

> Furthermore, it is far from clear today that strict platform adherence
sells
> products better in all cases.

Just in most cases. ;-)

> On the low-end, skinable UIs are all the rage.

You can get that very easily using SWT under Windows (using XP or
WindowBlinds?).

> Unfortunately, as it is built on Swing, it kind of divides the Java
> community that should gather its strength to provide a real alternative to
> Windows apps for the desktop.

Swing is killing Java on the desktop. Maybe SWT can help turn that around.

> Is SWT really required?

Yes. It was required several years ago when IBM started the project and it
can be argued that it is still required today.

> Or is this yet another approach that is based on the
> desire of ownership (in the sense of No Invented Here) for realtively
little
> benefit?

Desire of ownership? Maybe. Relatively little benefit? No.

> Which types of improvements could have been done to Swing with the
> level of effort that obviously went into SWT?

This assumes that Swing can be fixed or that Sun would have allowed IBM to
fix it.

> Why did you choose to re-implement a whole new toolkit instead of
improving
> what was there, if you felt it was lacking?

This is covered pretty well in the SWT docs.

> Or convince Sun to use SWT instead of Swing.

You would sooner see a snowstorm in Hell. Maybe once IBM buys Sun. ;-)

> The Java community needs a single UI toolkit

The Java community needs a good, native alternative to Swing.

-Eric

One Point
It's not just that "several SWT widgets look more like
Windows widgets". In the SWT case, and contrary to what is found on
almost all Swing implementations, most SWT widgets are Windows (or
Motif, or GTK, or Carbon, or QNX) widgets.

Also, you need to make sure that you don't confuse the look and feel of
Eclipse (the term in the industry is, its "branding") with the look and
feel of SWT. SWT will allow you to build apps which are
indistinguishable from other platform apps, since SWT apps are
platform apps. It just happens that the Eclipse UI developers wanted a
little something extra to set Eclipse apart from the "run of the mill"
platform app. SWT also has the power to enable them to do this.

McQ.

Last Modified 5/17/04 7:54 AM

Hide Tools