I like Swing a lot. Am I a rationally-thinking programmer? Ha! No. But I like Swing for a number of my own reasons. Let me share:
1. Swing is guaranteed to run on any JVM. No special installations or special JVMs.
2. Swing is rich with so many components and events, richer than AWT. Uh, do I understand ALL of the models and events and patterns here? No.
3. The tooling for Swing is terrific. Eclipse and Netbeans both have great tools for Swing development. I like tools. I need tools.
4. Swing is "top-to-bottom" and "bottom-to-top": I don't need to create a JPanel or JFrame before creating a JButton, or visa versa.
I do understand that there are drawbacks to using Swing as well. For starters:
1. Swing applications with heavy UIs may run a bit slow on certain platforms.
2. Swing look and feel may not always be consistent across all platforms
3. more....
SWT (The Standard Widget Toolkit) is a different beast when it comes to building UI-rich cross platform applications for the desktop. It is also a strong platform for doing what Swing and AWT do as windowing toolkits, but tries to fill the voids that Swing and AWT leave us with.
1. Swing and AWT do not render "native" widget components. SWT does use native widgets for a natural "look and feel"
2. Because Swing/AWT to not use the native widgets found on different platforms, the abstraction can cost you in performance. SWT is more native, and can perform better, as it provides the thinest possible widget support, natively, for the widest range of platforms. But care must be take when developing for specific platforms.
There are many compelling reasons for organizations to choose the RCP/SWT/Eclipse platform for their application development and maintenence environments.
OK. We have some development choices and options out there for rich Java Desktop applications. Excellent. But here is some harsh reality: SWT and AWT do not mix. Can SWT and AWT widgets co-exist in the same application? Not very well, but it can be accomplished with a little help from the SWT-AWT bridge and some complex development approaches. Here is an interesting article that goes into depth on this topic, outlining the pitfals and angst that can be experienced in trying this.
So, what does this mean for ArcGIS Engine Java developers? The high-level UI developer components that ship with the Java SDK for ArcGIS Engine are based on AWT. Period. These components have never been successfully tested in SWT or "mixed" application development environments.
What I strongly encourage Java Engine developers to do is this: avoid trying to mix SWT with ArcGIS Engine application development at all costs. At the current release, this usage will not be supported. ESRI will look into this for possible consideration later on, but at the present time, please don't go there!
So, have fun on the Swing-set, and don't hurt yourself!