Quote Originally Posted by dilettante View Post
The truth is browser-embedded Java is pretty rare and has been for quite a while. It suffers from the same kinds of security problems that client-side ActiveX and .Net had, which is why the more heavily sandboxed SilverLight was created but even that's deprecated now. Most people have moved on and live with Ajaxy JavaScript for browser interactivity.
And like all NPAPI plugins, Java is totally unsupported on mobile platforms, so that's another nail in its "browser-embedded implementation" coffin. (I find this ironic, since Java was also the go-to language for mobile app development for some time, due to its strong support in Nokia's Symbian OS.)

Quote Originally Posted by dilettante View Post
Java was weak on GUI widget libraries for a long time (1995-1998?), but much of the world settled on Swing. Native look and feel portable was pretty much solved for most purposes. When you want true native look and feel you use SWT, which is platform-speciifc and wraps native controls. That's similar to VB6/Win32 controls or WinForms.

However as the world got more and more used to web pages and demand rose for more of a "flow based layout" UI we got new widget libraries. In Java's case that's JavaFX, .Net got WPF. In both cases the result is "native nowhere" and in general one big skinfest (as in skinning) of deviant looking UIs. Microsoft tries to reign this in a bit for WinRT by dictating guidelines you must follow to get into their Store.

But Java doesn't have any desktop UI issues, and hasn't since the late 1990s. For some reason we see this straw man raised over and over here.
I don't see this as a straw man, and in fact I agree with FunkyDexter's explanation.

Swing does not wrap the underlying OS APIs. It's written entirely in Java, and while it's made to look like various underlying platform toolkits, it still stands out like a sore thumb (in my opinion). Not only are the fine details often wrong, but things like fonts and animations do not even try to mimic the underlying OS settings. While this wasn't a problem so much on XP and earlier, it's pretty noticeable on Aero, and downright terrible on OSX. (Hence the need for other OSX-specific UI libraries, like Quaqua.)

For something like a game with a custom UI, no problem. But for standard desktop software, I don't see many people writing serious apps anymore in Swing... or JavaFX, for that matter. Even major projects like LibreOffice (the far superior successor to OpenOffice) have dropped Java UI components completely.

Outside of the web, I don't think multiplatform front-end development will ever be feasible. Even on the web, it's only become practical in the past few years, thanks to browser vendors *finally* taking standards seriously.