- The Unpopularity bit is Java Applets (java in the browser) and not Java itself, people fail to make this distinction.
I really really second this. I meet lots of programmers who say Java is dead or unused, and they think this because they don't know about the tonnes of Enterprise stuff done with Java. There is a reason why Java is the most popular language in the world (according to some measurements) and that has nothing to do with applets.
On the plus side Java is lightning fast. I've had plenty of innefficient algorithms that scale massively with Java on low-end machines simply because of it's speed. I port them to JS and even in Chrome they need to be heavily optimized.
That's about it for the pluses. Applets can be are really horrible to use. The startup is still terrible, and there are still loads of niggly issues such as what happens when running your applet on an older version of Java and with caching errors.
Even though people see Flash as being replaced by HTML5 + JS, it's getting far more development then Java. Adobe are putting huge amounts of efforts into Flash to keep it at the forefront, to help keep it a real contender. Video playback is still far better with Flash, even on Linux (at least for me). Unlike with HTML they can just add any features they feel it really needs and all their users will support it within 3 months of a new Flash update. Sun, and now Oracle, just aren't driving applets. This comes back to my first point, that Java is only used in the enterprise world and so there isn't any point in improving applets. That's the sad reality. What you have now will almost certainly be exactly the same in 5 years.
Then there is penetration. Flash has over 90% whilst Java 6 is only over 60%. With penetration that good it invalidates the argument that you should use HTML5 since you don't have to rely on a plugin (because with Flash it will be there). There is also the annoying fact that the web feels like it's on the point of being revolutionised with WebGL in (most) browsers and Flash planning to support 3D. The annoying bit is that Java has been 3D capable for over 10 years, so why have we not seen masses of 3D games deployed via the web? Because it's never been really pushed with Java.
For me I often feel Silverlight is what Java applets should have been. Pushed by a big company with proper tool support. Like Adobe, MS also sell tools aimed solely at building software on top of their platform. I even used to use some of them (Expression Design) for building art work for when I built applets! Sun (now Oracle) just don't.
For me Java is still an excellent choice for something really advanced and powerful, because it'll require lots of errort and so working on top of Java adds very little compared to say Flash or JS (and probably even reduces some time because again you don't have to care as much about performance). For anything else it just makes far more sense to use something designed with that in mind. To me applets have always felt like a hack put together over a week, like it's only half built as a proof of concept.
Although that's just my opinion. MineCraft and RuneScape prove you can build something great with Java. There are also some popular Java applet portals. I think those examples are a far stronger argument then anything said in this topic.