Xamarin, the company co-founded by Mono inventor Miguel de Icaza to enable cross-platform mobile development with C#, has acquired RoboVM.
RoboVM lets developers target iOS and Android with cross-platform Java code, complementing what Xamarin already offers for C#. "The acquisition means that Xamarin now controls the cross-platform mobile development market for the most widely adopted languages capable of native, client-to-server, cloud-to-mobile development," is the bold statement in the company's press release.
Java is normally compiled to an intermediate language called Java bytecode, which is further compiled to native code by a just-in-time (JIT) compiler at runtime. By contrast, RoboVM has a native compiler for Java bytecode, which it calls "ahead of time" (AOT), since it produces a native executable. This is necessary for iOS, since Apple does not allow JIT compilation on its mobile platform.
The way this works is that RoboVM uses the Soot open source tool to translate Java bytecode to LLVM IR (intermediate representation). LLVM, also open source, is a compiler infrastructure project which enables back ends targeting numerous platforms, including iOS and Android.
RoboVM also offers a custom Java-to-native bridge, called Bro, which lets you wrap native C or Objective-C functions in Java code using annotations.
Although RoboVM targets both iOS and Android, the focus of the documentation is on iOS, presumably because Java is already the native programming language for Android applications. Like Xamarin, RoboVM is primarily for sharing non-visual code, and developers normally use Apple's Xcode Interface Builder or a programmatic approach to creating an iOS user interface.
The RoboVM AOT compiler is open source, but since the first full release in March 2015 the company has offered commercial licenses that include additional closed-source tools such as the debugger, integration with Apple's Interface Builder, and support services. Licenses are subscription-only and currently cost $25 per month for the basic Solo edition, $125.00 for a Business edition, and tailored quotes for large organizations.
Those prices are similar to Xamarin, which is also subscription-only. A key difference, though, is that Xamarin's mobile compilers are not open source.
According to the press statement, "Xamarin and RoboVM will operate independently to ensure each team stays focused on their C# and Java user bases, respectively." But there are obvious advantages in shared developer marketing and sales, as well as Xamarin tools such as Test Cloud for app testing on cloud-hosted mobile devices, which will also be applicable to RoboVM customers.
Despite this statement, there is significant overlap in the tools offered by the two companies, and it would not be surprising to see further integration.
This acquisition makes sense for Xamarin, enabling it to pitch for Java as well as C# developers. It may not be so welcome to Microsoft, if in the long term it dilutes the focus on C#, which has made Xamarin a key partner. ®