Proof that Swing is Getting Cooler
- By Matt Stephens
The upcoming version of Java (version 6, codenamed Mustang) is promising all sorts of wonderful new things for the client-side programmer. For example, check out what’s going to be possible using the humble JTree component:
The screenshot is from a chat demo which was shown at the Extreme GUI Makeover session at JavaOne 2005. It’s made possible by a handy new feature in the (underrated and under-supported) Synth look & feel. In fact, the code to do this is now available as of Mustang "early access" build 53. It’s a cutting-edge early access build, so download at your own risk!
(Actually I’ve been using the latest Mustang build along with the latest daily snapshot(s) of NetBeans 5.0 as they’re released, and haven’t encountered any major problems so far – it’s all been quite surprisingly stable).
This is all very cool stuff, and raises my hopes that Java, and Swing in particular, will still prove itself to be a strong contender for creating both “thick client” (aka desktop) and “rich internet client” applications. A team starting on a new, desktop-based project would be crazy not to consider using Swing these days.
However – there had to be a cloud attached to this silver lining, naturally – the effort required to make Swing sing and dance as in the above screenshot is still very high. We are seeing profoundly cool-looking Swing demos from industry gurus who also happen to work at Sun and be on the Java desktop team, and who therefore know Swing literally from the inside out. But these kinds of effects are still unfortunately beyond what most programmers will be able to do – not because they can’t, but because there won’t be time allocated to play around doing cool things in most projects’ budgets.
Swing is really getting there in major leaps and bounds, but “cool” visuals need to be part of the basic component set, not just achievable through technical wizardry and manipulation of advanced look & feels.
Let’s hope that when Mustang is released, creating a visually impressive UI like the one in the screenshot will be a case of simply setting a property on the JTree component.