It seems to me that the number of third-party OS libraries and frameworks available in java, both in terms of breadth and state-of-the art, far outstrips the resources available in other languages. It's virtually the default choice for enterprise systems, and a vast array of academic research is also java-based, resulting in a hugely rich eco-system.
I just don't understand why java is not better embraced or more widely adopted amongst the startup community.
There are definitely some great reasons to use java for certain tasks, specifically due to the wide range of library support. If I had to use Java for a greenfield project though I'd probably take a serious look at groovy.
After a certain point, there's a base of libraries that is Large Enough. I've never really been wanting with Ruby, at least not in the 'oh, but there's this Java library that does exactly what I want' sense.
Even then, JRuby would make it Just Happen, or maybe even SOA.
Having GD embedded in PHP makes many image processing tasks far easier and less painful than trying to do stuff using Java image libraries (for example).
"It's virtually the default choice for enterprise systems" then "I just don't understand why java is not better embraced or more widely adopted amongst the startup community"
"Startups" and "enterprise systems" are, in many (most? all?) cases, worlds apart in terms of needs.
I say this as someone who's done PHP for 14 years and Groovy/Grails for 3.
Sorry, I didn't mean to imply that they were; more that the wide adoption by both enterprise and academia has driven the development of a great number of world-class libraries and platforms in java.
That said, when I am prototyping, or doing a quick tool, it's usually in Perl. Quicker to write, and runs quicker as well (when single threaded). At least if "quicker" involves I/O, caching in hashes (maps) or sorting/searching. Java is quicker than Perl if you are twiddling ints, or throwing all your data away just after the network gives it to you, though :-)
Ruby is nice too, but I have done quite a bit less of that.
(ex. I just googled system.out.println and it pulls up Java 1.4.2)
They're doing pretty well for themselves too.
Because other languages are faster for rapid prototyping.
Also, there are lots and lots of people who learn just enough Java so they can get jobs in programming. Body shops hire them because they are cheap and because none of their clients, who demand their products to be written with enterprisey brands they read about in enterprisey magazines, will ever look into the code they write. Unfortunately, most of them also learn HTML and build websites.
And that creates the problem you see.
I had successfully avoided Java for most of my career, so it was also an opportunity to learn something new.
That was a terrible mistake. It's almost impossible to find answers that are relevant. There is very little readable documentation, even directly from Oracle. When you do find a relevant bit of information on a forum or blog, it's either outdated or useless because the author doesn't specify what their environment is.
I asked my colleagues for books, blogs or other resources to help me get up to speed. They pretty much laughed and said I'm out of luck.
I won't complain about the tooling. It's bad, but that may be more a matter of taste than anything else.
Also, for most of those results, you'll get some horrible unusable web site, probably with serif fonts to compliment.