Because Java is strongly structured, it's easier to bulk hire and fire programmers into and out of large projects. The ramp-up time is shorter.
And that forced language structure can function as a rudimentary safety net for mediocre programmers.
From a large company's point of view, it is a cheap and homogenized programming force. You, I and Joel Spolsky might care about the "good" programmer that massively outperforms other programmers. Most businesses want cheap and reliability.
Add to that a market of off-shores and other workers that fit the "cheap" bill and you end up with dominance. When's the last time you saw a H1B that programmed in Haskell?