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.