Java is still alive and kicking because it's an enterprisy kind of language in a world where all the hip new languages simply aren't that. As much as someone might love them a ruby or python, those languages are not controlled by the kinds of entities who are hesitant to break 12 year old software with new releases, nor are they backed by the kinds of major players who could force a language through the entire industry.
If you just look at languages that either have enthusiastic big money backers or importance due to legacy, you are generally limited to C/C++, C#, and Java. Companies like IBM, Microsoft, Sony, Google, Oracle, Facebook, or even Amazon don't put an effort behind a language like ruby, which is at least one reason it's more niche. And if you look at what's out there, most of those companies are wedded for one reason or another to one of the languages already in broad use.
Now, if Google ever made a serious effort to push go, perhaps it would gain traction in a serious enterprise kind of way. Likewise, if Facebook were to ever decide to push a language, they might have the clout.
And so, we have C/C++, C#, or Java. Neither Java nor C# fill the niches that C/C++ do, so those aren't even direct competitors. So if you want to use a language designed for large software systems with a lifecycle potentially in the range of decades, and you want garbage collectors, you're probably going to choose between which devil you prefer (Oracle or Microsoft).