The amount of open source software and libraries for Java is also staggering.
The JVM platform is great and improving all the time.
If you like dynamic languages, why not try something that runs on the JVM as bytecode, like Groovy, JRuby, or Jython? You'll get the best of both worlds and can call Java code from your dynamic language.
I hate that there isn't a way to do some kind of persistent socket connection in browser-Javascript, unless you include Flash into the mix.
That's why I've been interested in Scala lately. I could see advantages to opening up your platform to enterprise drones. Scala might be a way to do it without becoming an enterprise drone in the process :)
Despite the hype and UML-wielding enterprise architects standing around it, Java-the-platform is still interesting. mailinator was done in Java (see http://mailinator.blogspot.com/2007/01/architecture-of-mailinator.html ), and handles tremendous amounts of spam on cheap hardware. And there's RabbitMQ, the Java-compatible message bus written in Erlang. Java doesn't have to suck...
In fact, Google uses it to build their web apps (GWT). Its not going away, rather it keeps expanding and morphing to fit new emerging needs.
To hackers who feel tied down by the rigid structure of statically typed languages, it probably seems dead. Higher level loosely typed interpreted languages seem to be the growing trend now.
Dead on the Client? I don't think so. Does no one here code in Eclipse? Azureus and several other really good client apps are Java. It is a very attractive choice considering the wide range of classes in the core API and in open source libraries.
Besides GWT, Java web development sucks though, IMHO. JSF did not improve things much. They are trying to add AJAX features but it just doesn't work. Its too cumbersome for hackers to work with IMHO.
Re: Java, it sounds like the excitement has died, but neither Microsoft nor Java are anywhere near dead. In fact, what has really died in the computing world, besides coding in machine code/assembly language, punch cards/paper tape, and teletypes? And aren't we thankful for that? It seems like every other computer interaction idiom is alive and well.
Some things don't stay dead forever, either. Dynamic languages could've easily been declared dead 13 years ago, without exaggerating, but they've been making a resurgence recently.
The Java hype appears to be mostly dead. Only the most pointy-haired continue to think that Java is a silver bullet for all problems.
Java has a ton of overhead in its syntax and structure: just saying "Hello world" takes like 10 lines.
In an enterprise, where you have so many developers who will work on the same codebase, then a nanny-language like Java is appropriate. You never know who might take advantage of a lack of structure and do something Really Stupid[tm] that you won't find out about until much later.
But for hacking? YMMV but in my experience, the only hackers who need Java are the ones who cannot exist without a lot of predefined structure.
Another problem is that using most Java frameworks is not as simple as including a JAR in the classpath. They require different amounts of config files and boilerplate start up code.
The ultimate problem is that when you've had a taste of metaprogramming, real closures, or some other feature that Java lacks, you find it extremely irritating to lose that power just so that you can say you wrote it in Java.
PS. Limewire is a client Java app (or at least loads and looks like one).
"the only hackers who need Java are the ones who cannot exist without a lot of predefined structure"
about Rails as well. The difference is that Rails does not force structure on you. It just makes it super-convenient to use it. Java, in my experience, seems more heavy-handed.