
Java Swing comes with "pluggable look-and-feel technology", which essentially boils down to the fact that interfaces can be "skinned" (although this is simplifying a tad) and is therefore, extremely flexible. By default, Java ships with a cross-platform look-and-feel (LAF), which means your apps can look consistent across all platforms, or LAFs that mimic the look of a specific platform, say Windows, for example. However, one of the chief complaints of Java desktop applications is its "look". It basically stems from two issues:
Office XP looks the same on my computer as Office 2000 does. I don't use any XP themes so that could be it. Messenger and Windows Media Player aren't too far a departure from other Windows apps either. So I'm not too sure about the arguement of MS apps having a large variance in their GUI appearance.
I never skin my apps except the ones that come with a crazy default skin I usually change them to a "Windows Classic" skin.
The last Java app I ran was Azureus and it was a resource pig. The Oracle DB and IBM DB2 database software are done in Java and I'm not too fond of those eiher. Funny thing is that for running Java I get better performance using the Microsoft VM instead of the Sun VM. In my experience .Net apps take longer to load than non-.Net apps but run fine once loaded.