What's wrong with GUIs on Java? Well, here's a good start -- from Sun, no less.

Prior to Java 2 Standard Edition, JDK 1.4, the AWT focus subsystem was inadequate. It suffered from major design and API problems, as well as over a hundred open bugs. Many of these bugs were caused by platform inconsistencies, or incompatibilities between the native focus system for heavyweights and the Java focus system for lightweights.

The single worst problem with the AWT focus implementation was the inability to query for the currently focused Component. Not only was there no API for such a query, but also, because of an insufficient architecture, such information was not even maintained by the code.


Since Microsoft Windows provides [a way for determining the "opposite" Component involved in the focus or activation change] for free, developers migrating from Microsoft Windows C/C++ or Visual Basic to Java had been frustrated by the omission.

(It should be noted that these quotes are from an article explaining how Java 1.4 fixes these age-old problems.)

Java is showing its age. I've heard many people, including some that are pretty age-old Java gurus, calling for Java 3 to break backwards compatiblity with Java 2 and below as these and other bugs are fixed. "Throw out the legacy and do it right!" they scream. Well, I'm happy to see that, so far, Sun has stayed the course and kept backwards compat in new releases of the Java VM. I'm not sure that so much as one deprecated method has been completely chopped yet. Let's face it, Java was an attempt to throw out the legacy (C++ and C) and do it right.

In many ways Java succeeded, vastly improving over its predecessors, and then in a few ways Sun did no better than to design New Coke. There are some things so broken on Java that somebody could start rolling something new at the same time. A good Swing replacement is long overdue -- of which a new "focus subsystem" could be a large part but a Swing redesign should also include more intuitive modelling systems (for sorting, click events, etc), more robust simplest-case models for GUI widgets, and better GUI speed. SWT, as I've mentioned before, seems to be a move in a better direction, but its platform dependence for look makes me wonder if it's a real cure. Windows.Forms, believe it or not, is an excellent role model.

Anyhow, just thought that link was interesting. And that's quite enough programming for tonight.