Kirill Grouchnikov has a new article up on java.net called How to write a custom Swing control which features a Java version of an odd new control from a recent MS product (that I have not seen in the wild.) Kirill seems unique among the Swing open source java library developers in that he takes seriously the threat that MS’ avalanche of new GUI controls poses to Java desktop development. His Flamingo component library provides a few of them, notably a ribbon (I contributed Topologi’s breadcrumb bar to the project.)
What is this threat? Java is heavily predicated on an idea Write Once, Read Anywhere (WORA). Its GUI library reflects this, with a fairly conservative selection of controls that can mostly have analog in the native GUI control sets of the WIMP (Windows, Icons, Menus, Pulldowns) -based GUIs of the different platforms. These are slightly augmented by whatever low-hanging fruit is around and are highly customizable, to enable the same controls to be rendered with the native look and feel. And to allow developers to extend the functionality. All good.
But MS is in the process of throwing away the WIMP interface. Or, at least, the M and the P. I call it WEIRDF: Windows, Ectoplasm (highlights, animations, fade-ins, reflections, 3D effects), Icons, Ribbons, Dynamic galleries, Floating things. Over the course of the next couple of years, WIMP interfaces will become increasing old-fashioned and quaint to mainstream users. This is a big challenge for developers, such as myself, who put out Java Swing applications for desktop use.
The major Swing developers at Sun, with no disrepect intended, seem singlemindedly intent on thinking within the box: adding shadows or JOGL effects to the existing set of components. Romain Guy’s upcoming book Filthy Rich Clients （which I am looking forward to: I have praised him before in this blog) seems to concentrate on adding Ectoplasm to the existing components: MacCrapery. It lovely, exciting, fun but smacks of window dressing. MS is walking over them: the ribbon interface represents a fundamental rethink of the GUI and its priorities, and the only person who seems to have noticed is Kirill.
I hope that when the Swing guys get the Ectoplasm out of their system, they will take the other parts of WEIRDF seriously. I hope it is just a matter of them getting their ducks in order with rendering infrastructure first. Swing needs to have API-standard components for the ribbon, galleries, dynamic preview, richer tooltips, and so on. For goodness sake, even an XML description language like SWT (let along XUL or XAML). Or a statemachine to allow smart things with contexts. SwingX is the logical place for these; but instead what does it have? Catchup controls for things that might have been exciting a decade ago and low-hanging fruit.
And I suppose we will get this simple application framework sooner or later. But I fear it will be WIMP based, and consequently doomed to hold back Java on the desktop in 80s and 90s style interaction modes. For twenty five years we have all learned that when MS says “innovation” it means clumsy copying, and to look for the state of the art elsewhere, notably Apple. But it is a trap for Swing. And the complete lack, as far as I can see, of even the slightest acknowledgement that this GUI revolution has taken place over at the opposition, let alone any hint of a strategic response, is frankly discouraging for developers like me. I have no plans to leave Swing at the moment, but Swing seems a lot less future-friendly now than it did before. Thank goodness for Kirill.