Russell Beattie has written the post on the demise of Java that I'd wish I'd written myself:
I like Jonathan Schwartz a lot, but I think that unless some drastic changes are made to Java, the move to JAVA as Sun's ticker symbol is going to be as relevant as changing it to COBOL. I'm using Java less and less as time goes by, not more - the heyday of the language and platform has come and gone, and IMHO, unless some drastic steps are taken, it's going to continue to fade from relevance with increasing speed.
You really have to read the whole thing.
The great point the Russell makes is that the problems with Java are cultural, and he's right, but what he doesn't seem to realize is that this makes "saving" Java impossible. It makes it as likely that you could reverse course for Java as it would be to revive COBOL as a popular programming language. The world is moving on, and while thousands of programmers and many companies will continue to make a good salary from building and maintaining applications written in Java for decades to come, they will be working in a "legacy" language. Do not doubt for a minute that there's still good money to be made in that space, like there is today for COBOL, but the new and interesting work will not be done in Java, nor will it be done on the JVM.
Previously, in private conversations, I had put the time window on the demise of Java in the three to five year range. Given the reactions I've seen, I think Jonathon's move just shaved a year or two off that estimate.