LodgON and RoboVM delivering JavaFX on Mobile

Earlier this week, a partnership between RoboVM and LodgON was announced in which LodgON assists RoboVM with porting JavaFX to iOS client development, leveraging the RoboVM compiler. You can read more about the partnership in the press release and in this article on voxxed.com.

LodgON has been very active in porting JavaFX to Android devices. It brings the “write once, run anywhere” promise one step closer to reality. With a growing number of mobile devices connected to the Internet, and with more and more of these devices getting applications from an “appstore”, it becomes increasingly important for Java Developers to have a uniform way to create applications that can be uploaded to these appstores.
At this moment, it is already possible to create JavaFX applications, and convert them into Android packages or iOS applications. The process for doing this, however, used to be very different for Android and for iOS. Also, although both the iOS port and the Android port were based on OpenJFX, they used different versions.

In order to make it easy for developers to write applications that target all mobile devices, we have to take away the differences between a JavaFX Android and a JavaFX iOS application. Therefore, it makes sense for RoboVM and LodgON to work together more closely. The RoboVM Compiler is a brilliant piece of software that translates Java bytecode into native iOS code before it is uploaded to the AppStore, and thus before it is executed on the device.

During the first weeks of our collaboration, we already managed to bring JavaFX to the same level on Android and iOS. The JavaFX runtime we make available for the mobile platforms is based on the JavaFX 8u40 runtime for Windows, MacOS X and Linux. JavaFX 8u40 will be available as part of Java SE 8u40, which is expected to be released in March.

Not only the codebase is now the same, we also created a new unified Gradle plugin that allows to create Android and iOS packages very easy. We used Gradle as we want to leverage the “convention over configuration” paradigm. Simply including the “javafxmobile-plugin” plugin in your build.gradle file will create tasks that create the required mobile packages, or that even install them on your devices. Check the Getting started page on javafxports.org for more detailed information.

This is the result of a few weeks of work only, and there is definitely lots of work to do. We don’t support all of the features of JavaFX 8 yet, e.g. we are missing support for Dialog and for the media package. We need to work on performance, especially on the iOS port. The Gradle plugin needs much more configuration options, and we should make it possible to integrate with other build systems as well. With the recent RoboVM – LodgON partnership, I’m confident that we can tackle these challenges, and we will get closer to make JavaFX on mobile a viable option for developing client applications.

Having the JavaFX runtime available on mobile devices is one step, but I realize more is needed in order to create visually attractive and business-friendly mobile applications. Good enough, things are moving forward in that area as well. Expect more exciting news in a few months.