Over the past few months, I've frequently stated my belief that Java, in its
present state, doesn't stand much chance on the desktop against the march of
Microsoft's WinForm technology from the .NET Framework. A view, I've
discovered, shared by many of you. Before I continue, let me clarify my
position so we're all on the same page.
The only frameworks currently available to the Java developer from the
standard JDK are, of course, AWT and Swing. Naturally, we're not talking
about other client-side technologies, such as SWT and thinlets, to name a
few; but more on them later.
The less said about AWT the better. It doesn't even stand up to the
functionality of an HTML page with a basic FORM embedded in it. But we were
told not to despair; Sun promised that a much better technology was in the
works. We were then presented with Swing, which definitely looked the part.
However, while academically a sound design, in reality, it's a dog-slow
technology that suffers from far too much abstraction and object creation to
be practical. Swing applications require a lot of memory and a lot of
horsepower to get anywhere. I know there are some great examples of Swing
applications but, 9 times out of 10, I'm shown Forte and other heavyweight
IDEs, which conversely are great examples of how much stress Swing really
does put on the desktop.
On many Java forums around the planet are some great analysis pieces on
why Swing is slow and impractical. I urge you to check out some of the
discussions on Javalobby and Slashdot; you'll notice the conspicous absence
of any counterarguments.
I've already mentioned in previous editorials how we've missed the boat
with applets and how Macromedia has stolen Java's thunder with its Flash
technology. It grates on my nerves every time I surf to a particularly
Flash-heavy site, as this was the precise role Java had promised to fulfill.
I strongly believe that AWT lost us this battle, and Swing was far too heavy
to be anywhere near a browser to even be considered in the running.
The title of this editorial (sadly not mine but from a poster to our
"Ask JDJ" feature, www.n-ary.com/java/jdj/askjdj_question.cfm?JDJ_ID=4) sums it up very well: if Swing is our only hope, boy are we in trouble!
However, don't despair. I have news...great news...about Java on the client
side. We may have lost the first round, but the war is still being fought.
Since we can't rely on Sun to offer help here (I'm still waiting for a
return e-mail from Sun's tech lead for client-side Java, who still has to
defend Sun's Swing position), we have to turn to the efforts of third
parties you won't be disappointed.
The first technology I'd love to tell you about is thinlets
(www.thinlet.com) an effort from an individual buried deep in Europe. This is a lightweight GUI framework with rich widgets that you can easily use. You describe the front end using XML, and it's quick and easy to build up an applet. The framework is 30KB. That's it! Check out the Amazon demo and
please e-mail me if you aren't impressed. This is why Java is so exciting
and shouldn't be underestimated.
The second technology is the Standard Widget Toolkit (SWT) from the
Eclipse project (www.eclipse.org). This is a little heavier than the thinlet
technology and builds applications that would ordinarily be installed on the
desktop. It's a direct competitor to Swing and, from all reports, does a
much better job. By all accounts, running an Eclipse IDE on a 400MHz machine
is very fast, in stark contrast to running an equivalent Swing application
within the same constraints.
If you need your faith in Java reenergized, look to the community and
what they're doing. If you're waiting for Sun, don't. They're too busy
fighting Microsoft to worry about the actual technology they're supposedly
Alan Williamson is the editor-in-chief of Java Developer's Journal. When not
answering your e-mails and working on the next issue of JDJ, he heads up a
small team dubbed the "Thunderbirds of the Java industry," providing on- and
offsite rescue for Java projects in trouble. For more information visit
www.javaSOS.com. You can also read his blog: http://alan.n-ary.net.