This is some of what Java has going for it:
1. Massive standard class library covering everything from smartphones to distributed application servers
2. Huge amounts of third-party support. If you can think of it, someone somewhere has written a library for it, and chances are it's open source
3. The best IDEs in existence. NetBeans, Eclipse, IntelliJ, etc. all come with built in support for unit testing, dependency management, source control (mercurial, SVN, git, you name it), profiling, local and remote debugging, etc.
4. Agent support for instrumentation and runtime redeployment. Using tools like JRebel I can edit code in my IDE and see the results instantly in the application server, and *still* take advantage of strong typing, etc.
5. Object-Relation-Management (ORM). Tools like TopLink and Hibernate mean that you can reverse engineer a class model from a DB, or generate a DB from a class model, and use the ORM API to effortlessly add optimistic locking, transaction management, and object based queries to your app
6. Application servers support distributed transaction management (XA) and messaging (JMS) on top of a generalize connection management framework (JCA) in which any vendor can provide a standard connector (resource adapter) to their systems and participate in global two-phase transactions
7. Open driver support for virtually every data store; lots of choices for embedded in-memory SQL/RDBMS databases
8. Container-based pooling, caching, and transaction management
9. Dependency management and build systems like Ant, Maven, Hudson, and Sonar that enable you to very easily configure scheduled builds with static code analysis, automated unit tests, and concise reports of errors with references to changesets included in the build
10. Perhaps the largest collection of forums, blogs, and online documentation for any platform
11. Strong typing, API contracts, and runtime introspection identify issues at compile/deploy time, rather than runtime
12. Strong industry support from multiple vendors (Google, Oracle, IBM, RedHat, etc.)
So, if you're writing a little GTK widget for managing your MP3 collection, maybe Java isn't for you. But if you are a medium-to-large business chances are you either develop or administer an enterprise-scale Java application.
Another thing to consider is that the vast majority of Java tools and libraries are open source, and many of the specifications are formed once an open source toolset reaches a certain level of maturity/popularity. For example, Hibernate did most of the legwork for JPA; JSF was initiated largely due to the success of Struts; and WebBeans is a formal spec defining the basics what Seam provides. So all Oracle really has to do is keep the JCP going and publish the standards while RedHat (JBoss), IBM, the Glassfish development team, and everyone else provides the implementations. Oracle stays competitive with IBM and RedHat by offering a development stack (based on Oracle DB, Oracle AS, Oracle JDeveloper, etc. all of which use Java) *and* continues to collect licensing fees from the other players. Plus they have a little more say in the JCP process, which gives them a slight advantage when ratifying new APIs.
Not to mention that Java is installed in over 2.6 billion handheld devices, each of which pays a royalty fee to Oracle.
What surprises me is that Oracle is partnering with IBM on this venture. I wonder what IBM has on Oracle?