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.



Well,
Whenever you can get a free, publicly available place to deploy your applications, your first instinct is to grab it with both hands. Google App Engine is one of those places. Each developer can deploy up to 10 different apps in development mode.
Just got my hands on a copy of 



While never untrue, it is more of a necessity now, that a programmer should know more than just one language or framework. After being a focussed Java/J2EE developer for a long time since college, in the last couple of years, I plunged into .NET, Ruby/Rails and then Javascript/prototype/jQuery etc and now onto groovy/grails. With name like Erlang, Scala, Compass, git, blueprint, flex flying around us everywhere, it can be overwhelming and we need a plan to pick, peruse, acquire them. Here is a list of things I do when learning a new skill.