At no point did I say iOS was "clean and easy." I said it's possible with C#. Having said that, I use Xamarin a lot and their AOT compilation technique - while a little unwieldy if you're not on a Mac - works surprisingly well.
If Xamarin can do what they've done with C#/.NET then obviously it's POSSIBLE to do this in Java, but I haven't seen any actual implementation. This is why I said "right now." Or maybe I've missed the Java project that allows you to share 90% of your code between iOS, Android, and Windows.
If by "back end" you mean server side infrastructure you are correct, but only because Xamarin doesn't have to pay much attention to the back end.