Java on the desktop got a bad reputation for a bunch of reasons. It took a lot of time for the JVM to start up. Java desktop UI toolkits always looked amateurish and out of place on Windows and Mac. For whatever reason, Sun never came out with an incremental garbage collector for desktop use, so GC pauses were a real hassle.
All of these problems have been fixed. The new version of Android has incremental garbage collection. This helps a lot with the responsiveness of the UI. JVM start up time is not an issue because the JVM is always started. The UI toolkit is fully native rather than just being an ugly shim on top of something else.
There are still some people developing UIs in C++ or C on the desktop. The main reason you would do this is because the rest of the app needs to be in C++ or C for speed reasons.
Typical Android handsets tend to clock in at somewhere between 800 MHz and 1.2 GHz today. Apple's flagship device is still at 800 MHz (I think?) Experience suggests that you don't need "10x horsepower" to use GC.
iPhones still do tend to get better battery life than android handsets. I expect this difference to narrow as users start expecting their phones to do more. For example, up until recently the iPhone had no way to run user-installed background proceseses. But due to user demand, and the fact that Android had one, they had to add it in.