Personally I think Sun need a kick up the arse to sort out Swing. The current "emulation" approach leads to GUIs that look like Java GUIs on most platforms rather than native GUIs - they don't look or behave right. Using native widgets (a la SWT and Swing on MacOS X) has got to be the best approach.
More profoundly, JDK 1.5 should finally get generics which could have a profound effect on the library, limiting the need for casting. Many C++ coders complain that, although the language has had templates for years, many programmers don't use them. I'd hate for Java programmers in ten years to be casting java.lang.Object all over the place.