RoboVM just reached 0.0.14 and it is starting to look like a very viable way of running Java on iOS.
If you haven't heard of the RoboVM project then the idea is simple enough - let people code in Java rather than Objective C or Swift. To be more accurate as it is a bytecode to ARM compiler could code in any language that targets the JVM. This, of course, implies that apps that you create using it should run fast.
The next obvious question is how do you access the iOS framework from Java?
The answer is that there is a Java-Objective-C bridge that lets you call any native framework APIs you need to use. Objective-C objects can be used just as if they were Java objects. The remainder of the runtime is provided by the Android Framework minus anything to do with the UI.
The bad, but fairly inevitable news, is that you still need a Mac and XCode to use RoboVM. As the development environment is Eclipse or the command line you probably could use another system to code your app but if you want run the compiled code you need the Mac. You can run your app on the simulator or a real device.
The latest version has been upgraded to use the latest Android runtime classes - KitKat 4.4.3 - and Xcode beta 2 with iOS 8 beta support. There are a few minor house keeping changes and binding for the new Cocoa Touch frameworks - GameKit, MultipeerConnectivity, ExternalAccessory and GameController.
RoboVM is a possible way that you can make use of your knowledge of Java - or another VM language - to create iOS apps and hence avoid having to learn Objective-C or the recently released Swift.
However given that it can also create x86 compiled code perhaps it has even more uses? Why not a version for Android that compiles bytecode into native ARM or x86 code?
An interesting project that deserves your support and it's all open source.