You can also take a look at RoboVM.
It translates Java byte-code into native ARM or x86 code which can run directly on the processor without any VM or interpreter needed. Most of the Obj-C UI elements are already bridged into Java and follows the usual Java design patterns.
Edit
Robo VM recently announced that it would be shutting down the service - Source