I find it entertaining that Java's apparent successor will be, in many ways, a copy-cat of modern C#. It wasn't long ago that C# was created in Java's image. If this language is not continually enhanced, then it will fall behind. Java has always had trouble with this because of committees and fear of actually saying "no" (real deprecation). I swear "it'll be in Java 7" has nearly become a tag-line this year.
Back-compatibility is what enables old, useful, expensive applications to keep running. It is what made Microsoft so much money, and Intel so much money. It is the reason why Java is so universally adopted. At the same time, back-compatibility is frightfully horrific. I really feel for the x86 engineers, for one thing. And it's no protection against a true disruption - I was going to say "such as webapps and mobile",…
Reading that pile of documentation and interviewing the hordes that tend to the application are much more work than it would take to write a more modern version of whatever that does with 1000 lines of Perl (or Ruby, or Lisp, or Python, or Erlang, or Haskell).
It's not as much as Java did something right, but more like we did too much around it.
Disclaimer: I am currently struggling with a web application that's little more than a CRUD, but done with what I call "framework bingo" on top of a complicated network of servers, with dedicated Mule feeding Elastic Search servers where a simple CRUD (even the one that comes free with Django apps) feeding a static file system would offer better throughput and easier troubleshooting than the huge pile we see there.