I don't know what makes you think Java can compete with C++ or their cousins in the desktop space. No, it is not light and efficient, something like SublimeText is light and efficient and it was not coded with Java. I see the appeal, the language is awesome, and for backend stuff I agree with you, very powerful and well architected systems can come out of it, especially compared to the quick fix languages like Python, PHP and Ruby. But the thing is that Java does not stand a chance in the long run against modern languages like Swift, C# (or call it Java as it should have been done), Go, and even if hate to say it, Javascript.
Webspace you are better off with javascript nowadays, maybe something like Meteor could be the future there? who knows. And for Android devices, hate Apple as much as you want, but in all the iOS devices I have had, no matter how little RAM they could have, I have never seen what happens with my Android phones when the garbage collection kicks in. Sometimes a full 3-5 seconds lock up of the interface in the worst scenarios. Try to pull that off with something based in Objective-C and you will see my point.