RoboVM, aimed at bringing JVM-based languages to iOS development, has reached its first stable version, Trillian Mobile announced, bringing new features and new commercial licenses in addition to its OSS core.
“The goal of the RoboVM open-source project is to bring Java and other JVM languages to iOS”, those include “Java, Scala, Kotlin, Groovy and Clojure”.
RoboVM’s approach to cross-platform development is based on a ahead-of-time compiler that translates Java bytecode into ARM or x86 machine code. This implies that no interpretation is ever done and the code is run natively on the target CPU. Besides providing unrestricted access to the Java platform, allowing developers to leverage the Java ecosystem, RoboVM interestingly goes beyond JNI with a custom Java-to-native bridge called Bro (“bridge” in Swedish). This is used to interface with the iPhone and iPad hardware or use iOS-provided services such as in-app purchasing or notifications. While JNI remains available in RoboVM, Bro is claimed to be simpler to use and to provide better performance than JNI.
Another significant characteristic of RoboVM, according to Trillian, is its integration with IDEs and debuggers.
Supported IDEs include Eclipse and for Android Studio, although the former is deemed to be stable, while the latter in an initial stage of development. Furthermore, integration with Xcode Interface Builder is planned to be released in Q2 2015 as a commercial feature.
Debugger support, only available with a commercial license, is ensured through the implementation of the Java Debug Wire Protocol (JDWP), which allows to debug a Java process from inside an IDE. The alternative approach of using LLDB was discarded, accorging to RoboVM, due to its process-centric model, which implies that “if one thread stops, all other threads have to stop as well”. On the other hand, JDWP’s thread-centric model allows you to stop a thread, while the remaining threads continue to run.
InfoQ provided detailed, hands-on coverage of RoboVM usage, from installation to creating an IPA for App Store distribution.
Community comments
Small corrections
by Mario Zechner,
Re: Small corrections
by Sergio De Simone,
RoboVM performs well on IOS but so does Xamarin
by Faisal Waris,
Re: RoboVM performs well on IOS but so does Xamarin
by Mario Zechner,
Small corrections
by Mario Zechner,
Your message is awaiting moderation. Thank you for participating in the discussion.
Hey, thanks for the coverage! Just wanted to point out a few things.
We do support JNI as well, but Bro makes things a lot easier.
IDE integration is not a paid feature it's free for all. In fact, people can use our OSS offering without paying us a dime to create unrestricted apps and publish them to the app store.
The paid features include the debugger and the upcoming interface builder integration along with support services.
Re: Small corrections
by Sergio De Simone,
Your message is awaiting moderation. Thank you for participating in the discussion.
Thanks, Mario. I have amended the post.
Sergio
RoboVM performs well on IOS but so does Xamarin
by Faisal Waris,
Your message is awaiting moderation. Thank you for participating in the discussion.
See this performance comparison from an ex-Googler:
medium.com/@harrycheung/mobile-app-performance-...
Both are good x-platform approaches.
Tooling, library support, cost, etc. would be other factors to consider.
Re: RoboVM performs well on IOS but so does Xamarin
by Mario Zechner,
Your message is awaiting moderation. Thank you for participating in the discussion.
Xamarin has had years to optimize their compiler. We are just starting out with optimizations, so I hope we can close the gap soon.
Regarding cost: with RoboVM you only have to pay for iOS, Android obviously comes for free. There are also no restrictions when you use our free OSS version. Your app can be as big as you want it to be, you can use any Java/JVM or native 3rd party library. You only pay for advanced features and additional support services on top of our open community forums.
There's already a few hundred apps and games on the App Store using RoboVM, so maturity is pretty good. There's obviously a gap to Xamarin as they have a head start. E.g. we currently don't have a production ready cross-platform UI toolkit. People need to use the platform native UI APIs. We are working hard on a solution here.
I believe that if you come from the Java ecosystem, RoboVM is already the better choice, but I'm of course biased :)