Java on iPhone,Android,Win,RIM and Desktop
codenameone.com
codenameone.com
I'd stick with robovm for cross platform capabilities, or, use Haxe.
The architecture is pretty hairy so making this into a local install is just not practical.
Re xamarin... anything they do well that you do not (yet)?
RoboVM on the other hand lets you use all the native iOS APIs from within Java and has a runtime library based on Android which limits you only to roughly the Java 6 APIs. As long as you structure your code properly RoboVM makes it possible to reuse large portions of your code between the Android and iOS versions of your app. So if you'd rather build an app that is truly native with a native UI and still want to be able to share code with Android RoboVM may be a better fit. And it's definitely not just for games even though libgdx+RoboVM is a killer combination.