LibGDX has just added preliminary support for RoboVM, which is essentially a Java runtime for iOS among other things. Previously LibGDX required a Xamrin (300$) license if you wanted to target iOS, so this is a nice step. In their words:
I started working on the libgdx RoboVM backend yesterday. RoboVM is an ahead-of-time compiler for JVM bytecode, that targets iOS. It’s completely free for commercial usage, supports the entire JRE (through Android’s runtime class library), has super easy integration with Eclipse and soon Maven, and is all-around fantastics. Development is really fast, compile times are in the seconds range for the simulator (once the JRE has been compiled).
I’m doing this mostly because i want to offer a free alternative for the Xamarin/Monotouch based backend. Xamarin has been super supportive of our efforts in the past, but there are some technical hurdles that we can’t seem to overcome, e.g full JRE support, JNI performance, high compile times etc.
I got all our demo games to work in an hour. Niklas Therning, the guy behind RoboVM, supplied us with an initial RoboVM backend. I had to fix up a minor issues with ApplicationListener initialization order, and things just started to work.
It’s still early days. There’s a lot that needs to be done, but i have high hopes that this will become our new defacto iOS backend.
What’s currently missing in the backend:
- touch coords are incorrect
- no audio yet
- Preferences are broken
- some missing implementations
What’s currently missing in RoboVM:
- More optimizations. Performance seems to be good enough already, JNI calls seem to be a lot cheaper than with IKVM/Monotouch. I’m not sure if RoboVM uses LLVM’s full optimization pipeline yet.
- A few bugs here and there, which we want to help to discover. RoboVM is tested against Android’s class library test suite, and pretty much all the tests pass.
You can read the entire post here. It’s still pretty early, and as you can see there are still some issues, but its certainly a step in the right direction.