Java is Like Senator Harry Reid: Meh, but Alternatives are Worse
Harry Reid hung on to beat Sharron Angle this past election day. It wasn't that the voters of Nevada loved him, it was just that the other candidate was so much worse. Much the same can be said of Java for enterprise applications: meh, but the alternatives are worse.
That's not surprising, as most of the alternatives to Java have focused on the things that made Java such a poor solution for webapps -- over engineered, thousands of different ways to roll your own application architecture, slow dev/compile/test cycles because of the JVM. But those same alternative left the back-end enterprise space alone.
Back in 2005 or so, the rise of Ruby on Rails hit Java like a gut shot. Java book sales started a free fall. But when it comes to the enterprise, i.e. highly scalable, high performance backends, Java is hanging tough. Over the last two years we've seen lots of hybrid Rails front-end, Java back-end solutions. The Rails part gives you the highly productive web development, the Java back-end gives you the highly scalable architecture.
This story should be familiar to anyone who has followed the first big Rails success story: Twitter. They moved to a Scala back-end for a variety of reasons. And of course Scala runs on top of the JVM (much like Groovy, it is a mutant cousin of Java). The other big competitor to Java in the enterprise space -- C# -- is still trying to have it both ways, competing with Java for the back-end services, and with Rails for the front-end webapps. I think MS is going to have to commit one way or the other rather than sitting between all chairs.