First, Java isn’t an “engine”, it’s a platform. You have engines (like Unreal, Torque, Ogre, etc) on top of the language/platform.
In terms of adoption among the indie dev community, you’re right: C++ is by far number one, and Objective-C and C# are the second tier up and comers. There are a small number of Java games, but a few awesome ones: I love Wakfu and of course Minecraft is big.
The biggest problem with Java is the runtime support. Java only runs natively on Android and runs on workstation computers (Windows/Mac/Linux) with this JRE thing that end users can’t stand. It doesn’t run on consoles, it doesn’t run on iOS smartphones/tablets, and it can’t run on things like Google native client (NaCl). This is fixable: Either Oracle or one of the developers doing an alternate JVM should make a path for JVM apps to run on these popular platforms (and ideally make it easier to hide the JRE piece like with what Wakfu or IntelliJ do with emdedded JREs). On the C# side, Microsoft officially supports C# apps on Windows and on Xbox. But the Mono group really took things further and made paths for C# development on Mac, iOS, Android, Google NaCL, and PlayStation Vita. That’s what game developers really want.
Why stick around? What is worth keeping about Java? Three big reasons: The tools. The flexibility. The community.
There are a ton of reasons to stick with JVM, even for games. There are also big problems with C++, Objective C, and C#. As musch as I appreciate C++, it is in the dark ages in terms of language design (so is Obj-C). C# is completely under the thumb of Microsoft. If there is an open source tool that doesn’t get full Microsoft support (like jQuery did where all the salaried evangelists recommend it and post tips about it, etc), it’s not treated as a real option. With Java, everyone hates Oracle, but at least the community is open in the sense that libraries, languages, frameworks, and IDEs really sink or swim based on merit rather than the approval of some central company.