OK, I don’t know Java well enough to give it a eulogy. It may not even be actually dead. But the end is definitely near. First, Oracle bought it, surely just to destroy it so the IBM can’t make money off of it anymore. Or maybe not. Maybe Larry actually wants it to live. Maybe the Oracle thing doesn’t even matter.
The strongest evidence I have that Java is dead – we (the .Net folks) don’t steal from it anymore. Much of the best things about .Net (including C# itself) have been stolen from Java. And that’s a good thing – that’s what progress is all about: taking ideas and expanding upon them in a different setting.
Now we steal from Ruby instead. We steal the ideas and language idioms. We steal the framework concepts (ASP.MVC look like Rails to anyone?). We steal the tools (how many Cucumber clones do we really need? Just use StoryTeller – its much, much, much better for matching how we roll in the .Net space…). And all of the cool kids aren’t jumping ship to Java world, they are becoming Rails heads.
Java brought some great things to the table – not having to manage memory being the biggest, although as a staunch NHibernate fan, I’m grateful for it for bringing about the rise of the ORM. It also brought some dreadful things – boilerplate for the sake of boilerplate (you know I’m talking about you, EJB). But on the whole, it was a great thing. It wouldn’t have led to the creation of C#, my drug of choice (although that probably had as much to do with Sun’s lawyers as it did any pure motives).
So, the question becomes, given how tightly coupled our histories have been, what does all of this mean for .Net? I think its clear – C# continues to get the best ideas from the rest of the language world incorporated and become more powerful. I just hope that it doesn’t end up being so convoluted in the process that it becomes unusable.