1) it's much better than C++, and not much slower if at all
2) ecosystem, as Box points out
3) a large number of people know it
Compared to a scripting language, it sucks for the individual programmer. If you know what you're doing. But in a business environment it's productive enough, you can find software to get done what you need to get done, and you can find people to do it.
As far as "neat" features go, that comes mainly from the classloaders. Products like GigaSpaces and Coherence are really nice, and Java lives in that world much better than does C++. You can't find products like those (that I know of at least) for things like Ruby, Python, or Perl, not with the same commercial support and bulletproof nature.
Up to a certain size project, without needing to take business drivers like personnel availability or commercial support into account, I would personally choose Python over Java. However, I have seen first hand the problems that a lack of a large trained resource pool can cause with non-mainstream languages.
Raw technology isn't everything, much as we as technologists would like to think so. The last 6 months as an enterprise solution architect have been eye-opening to me.