Say what you will about Java-the-language, especially after the world has moved on to higher-level languages, but it's hard to deny the extent to which Java has been a force for good in enterprise software development. The de facto standard for companies that didn't adopt Java? C++.
Yeah, I can deny it. I've worked in java shops for 2 years. The "good for enterprise" argument is bunk. All its lead to is inefficient and disastrous technology decisions, an inability to be agile and flexible in software development, and a general dumbing down of any smart engineers that happen to be stuck working there.
As a language, the best metaphor I can imagine is that Java is like the language of some Amazonian tribes. They don't have the concept of numbers bigger than 2. Its not about their brain power, just the way their culture and language has shaped their minds. That's basically what Java does to software engineers.
I would argue that this is what the Java culture does to software engineers, not the language. There seems to be this culture of the 'Enterprise Astronaut', that says everything needs to be 'Enterprise Ready'. I'm not sure what this means, but it seems to indicate incredible complexity.
But the language itself doesn't enforce this; it is very possible to write concise software in Java. What's better still, is you can use a Groovy (or JRuby, or Jython), and still use the HUGE class library provided by Java.
If you haven't played with it, give one of the JVM dynamic languages a go.
You've worked in enterprise Java shops for 2 years. I've spent ~4 years now parachuting into enterprises and doing security evaluations on Java apps. You may not like the "agile" "flexible" "dumbing down" "bunk" (and, hey, I'm not going to write something Java either), but you can safely take my word on it that the bunk is better than the empirical results of those same developers writing C++ code.