Java and JavaFX on iOS? Maybe not
First, using JavaFX isn't the most practical way to build an iOS app. Because iOS doesn't ship with a Java Virtual Machine (JVM) and JavaFX is implemented in pure Java, using the technology means iOS developers must embed both the JavaFX libraries and a lightweight JVM into their apps. That could potentially result in multiple, redundant copies of the JVM running on the same device.
Not to mention that outside of Oracle, no one has seen this particular JVM yet. Bair says his team's JavaFX ports for mobile platforms "are based on an as-yet unreleased version of JavaSE Embedded for iOS/Android," so we can't be sure what its capabilities are.
Second, Apple still places restrictions on the types of software that can be sold through the iOS App Store. Most notably, virtual machines that do Just in Time (JIT) compilation are forbidden, which could limit the real-world performance of Java, and by extension JavaFX.
Third, the licensing issues around OpenJFX and the App Store aren't clear. The open source versions of JavaFX and the JDK are licensed under the GPLv2 with the Classpath Exception. Cupertino has booted GPL-licensed software from the App Store in the past because the license conflicts with Apple's own terms of service.
Bair says "his understanding" is that the Classpath Exception means you should be able to link the JavaFX code libraries into your own apps, release the apps under your own license, and sell them through the app store without violating Apple's terms. But even he isn't 100 per cent sure, and he hastens to add that he's not a lawyer.
But perhaps the most significant reason why JavaFX is unlikely to take off among iOS developers is that there simply isn't any compelling reason to use it. Apple provides a native UI toolkit for iOS, and developers who prefer a cross-platform technology already have a perfectly workable solution in HTML5.
According to recent research by Gartner, by 2016 more than 50 per cent of all mobile apps will be so-called hybrid apps, built using a combination of native application logic and a UI layer based on HTML. Given that HTML rendering is supported by every modern smartphone platform, there's little incentive to bolt on something extra, such as JavaFX.
Still, niche UI tools and frameworks have enjoyed some success among games developers, and Oracle may be hoping to tap into that market with JavaFX, rather than selling it to productivity-app developers. If that's the case, however, there's a lot more work to be done before JavaFX is a viable competitor to the likes of Unity or ShiVa3D.
The question is whether Oracle is willing to do that work. The efforts of Bair's team to open source JavaFX are commendable, but until Oracle is willing to commit to a formal release of JavaFX for mobile platforms, developers aren't likely to have much faith in its future, either. ®