Thread overview
SWT, AWT, Swing, QT...
Feb 07, 2006
Matthias Spycher
Feb 10, 2006
Shawn Liu
Feb 11, 2006
Lucas Goss
Re: SWT, AWT, Swing, QT... (SWT, Swing or AWT: Which is right for you?)
Mar 01, 2006
Bruno Medeiros
February 07, 2006
I'm not an expert UI designer, but I've had the opportunity to work in groups that use (or have used) all the mentioned toolkits. It's very difficult to make a decision based on technical merit alone. QT is great for high-performance static apps (not much dynamism/configurability at runtime). The Java toolkits are quite good in the more dynamic environment of a JRE (reflecting the smalltalk heritage). I would argue that AWT/Swing and SWT will continue to benefit from the competition on the Java platform. The SWT/JFace combo in eclipse demonstrate that you can build very large sophisticated apps in Java. Performance is not as good as QT,  but it is sufficient for many apps. Take a look at IBM's Workplace Client technology for example:

http://www-128.ibm.com/developerworks/workplace/products/clienttechnology/

I vote for DWT, not for technical reasons, but because it's a good business decision. I very much agree with Shawn Liu's assessment of the benefits of "getting close" to the eclipse ecosystem. SWT -> DWT may be just a launch pad for something much bigger. Anyone who has used eclipse with EMF and GEF knows where this train is heading. The model-driven architecture (MDA), where most of an application's code is generated, is becoming a reality. And if D can ride this wave, it has a much better chance of survival.

Matthias
February 10, 2006
Frankly speaking, I'm not a GUI expert neither, but a fan, and spend a lot of time on it. I began to learn java at the beginning of 2004. Attracted by Eclipse and SWT (but don't like the VM of java).  At the end of 2004, I firstly encountered D by chance. Wow, like the words in main page of D, "Great, just what I need.. ". But seems there wasn't a very powerful GUI library for then. I tried to pick up DWT on Dsource.org and made some attempts in 2005. So far the DWT win32 reaches v0.35.


A well designed GUI library is important especially for a system language, since it is used more in desktop than in server side. Where were many argues about cross-platform GUI library and many available libraries. http://freshmeat.net/articles/view/928 http://www.brayden.org/twiki/bin/view/Software/GuiToolkits http://www.cuj.com/link/subject36.htm?topic=link


There are mainly 3 approaches to make a cross platform gui library, distinguished by heavyweight/lightweight or native primitive/emulation.

1) lightweigh and fully emulation
 a top level window is native primitive as a container and any other widgets
are emulated by "drawing". In win32, only the top-level window wrap the
HWND.
 java SWING is such a toolkit, and some SDL/OpenGL based library, and Andrew
Fedoniouk's "Harmonia"
 http://www.terrainformatica.com/wiki/pmwiki.php?pagename=Harmonia.Harmonia
 Seems that google's picasa2 uses such library
 http://www.google.com/picasa/

 pro : Easy to implement rendering, texture, zoom, skin etc. since there is
a graphics engine under the GUI toolkit. Java2D is such a easy to use thing.
The maintenance is not heavy.

con: may different look-n-feel from the native app. Some application can not work with it. For example, an on screen dictionary application. Try as possible to emulate the native widgets and theme is not easy and may cause performance issue. Open File Dialog in SWING is such a thing. Font in picasa sometimes seems not clear and sharp enough.


2) heavyweight and emulation
 widgets are native primitive but don't use the controls provide by platform
and emulate the behaviors. In win32, behind every widget there is a HWND.
 QT and FoxGUI http://www.fox-toolkit.org/ are such libraries.
 google earth is written using QT
 http://earth.google.com/

 pro: height performance as native widgets. maintain the source in a high
level.

 con: look-n-feel still different from native app.

3) heavyweiht and use native widget as possible
 SWT and wxWidget are such toolkits.

 pro: native look-n-feel, themes by the platform, high performance. Upgrade
with the system.

 con: maintain the source for different platform is a heavy burden. Still
need emulate some widget in some platform.


We can see every approach has its benefit and drawbacks.

To D, if we make a GUI library from ground, I'd agree to Andrew Fedoniouk and choose 1). This is the minimal cost way to support D in more platforms. I don't mean to port SWING to D is a good idea. SWING is based on AWT and has some performance issue since the class hierarchy is too deep. I mean from ground and in pure D. Harmonia is interesting and should go further. But build one from ground may be a long time run. It is not easy for D community to bring such a toolkit for now.

If port some thing available, I'd like it be SWT. Java seems a sibling to D. Port java to D is far easy than C++ does. Eclipse/SWT is well designed and maintained. And seems it is accepted and supported by the industry. Port it to D is easier than invent new.


Just my thoughts. Sorry for my poor English.



"Matthias Spycher" <matthias@coware.com> says:dsapvp$2n1n$1@digitaldaemon.com...
> I'm not an expert UI designer, but I've had the opportunity to work in groups that use (or have used) all the mentioned toolkits. It's very difficult to make a decision based on technical merit alone. QT is great for high-performance static apps (not much dynamism/configurability at runtime). The Java toolkits are quite good in the more dynamic environment of a JRE (reflecting the smalltalk heritage). I would argue that AWT/Swing and SWT will continue to benefit from the competition on the Java platform. The SWT/JFace combo in eclipse demonstrate that you can build very large sophisticated apps in Java. Performance is not as good as QT, but it is sufficient for many apps. Take a look at IBM's Workplace Client technology for example:
>
> http://www-128.ibm.com/developerworks/workplace/products/clienttechnology/
>
> I vote for DWT, not for technical reasons, but because it's a good business decision. I very much agree with Shawn Liu's assessment of the benefits of "getting close" to the eclipse ecosystem. SWT -> DWT may be just a launch pad for something much bigger. Anyone who has used eclipse with EMF and GEF knows where this train is heading. The model-driven architecture (MDA), where most of an application's code is generated, is becoming a reality. And if D can ride this wave, it has a much better chance of survival.
>
> Matthias


February 11, 2006
I'm a GUI fan myself. But the one thing I don't understand about SWT/DWT is, why don't they use the factory pattern? Would there be no benefit? Or is it a performance thing since there are no interfaces (abstraction)? Or something else?
March 01, 2006
Here's an article posted on slashdot, with some more info between the GUI toolkits SWT, Swing and AWT:

SWT, Swing or AWT: Which is right for you?
http://www-128.ibm.com/developerworks/opensource/library/os-swingswt/?ca=dgr-lnxw01WhichGUI

-- 
Bruno Medeiros - CS/E student
"Certain aspects of D are a pathway to many abilities some consider to be... unnatural."