JavaFX and iOS - it will remain a dream

Tom Schindl tom.schindl at
Wed Jul 31 01:37:51 PDT 2013

On constrainted devices it is simply too slow because of all the
reflection happening, you need to look up classes, decide on what a
property means, doing type conversions from String to int, bool, ...
this all eats up CPU-time!


On 31.07.13 09:15, John C. Turnbull wrote:
> Tom, why do you think FXML on mobiles is a bad idea?  Performance?
> -----Original Message-----
> From: openjfx-dev-bounces at [mailto:openjfx-dev-bounces at] On Behalf Of Tom Schindl
> Sent: Wednesday, 31 July 2013 16:29
> To: Niklas Therning
> Cc: openjfx-dev at Mailing
> Subject: Re: JavaFX and iOS - it will remain a dream
> I don't think it is a good idea to use fxml on embedded and mobile, we are working on a fxml => java converter so you can add it to your build process.
> Tom
> Von meinem iPhone gesendet
> Am 31.07.2013 um 08:11 schrieb Niklas Therning <niklas at>:
>>>>> after many days trying to really build iOS apps with JavaFX and 
>>>>> RoboVM
>>> or
>>>>> Avian I’m very frustrated because of the following things:
>>>>> Based on RoboVM, JavaFX on iOS runs unacceptable slow - I don’t 
>>>>> know
>>> the
>>>>> reason - maybe it’s the rendering model of JavaFX - maybe it’s the 
>>>>> currently unoptimized RoboVM One big problem of RoboVM is it’s 
>>>>> dependence of the Android library, it does not support the OpenJDK. 
>>>>> That’s a big reason for many many
>>> problems
>>>>> when using JavaFX. So currently it’s not possible to use fxml files
>>>>> (FXMLoader) because of the missing Stax xml parser and classes like 
>>>>> XMLInputFactory in the android library…
>> There's now a compatibility library for the jfx78 backport which 
>> includes the missing sun.* classes from OpenJDK [1]. So that will not 
>> be a problem when running on RoboVM/Android. Daniel Zwolenski is 
>> working on getting this into Maven which will make it nice and easy to develop with RoboVM+OpenJFX.
>> FXMLLoader relies an StAX and the Java Scripting API. Those can both 
>> be made to work on RoboVM/Android. The POM of the compat project [1] 
>> contains optional dependencies on the StAX API and JSR 223 API. For 
>> StAX you'll also need a StAX provider [2][3]. For scripting you'll 
>> need a JSR 223 implementation of the scripting language you're using, 
>> like Rhino for JavaScript [4][5]. Please note that I haven't tested 
>> FXML but it should work (in theory at least ;-) ). Please give it a 
>> go. It will be a great blog story if you can make it work on iOS.
>> As for the performance issues with RoboVM+OpenJFX: those WILL be addressed!
>> You can either wait for it to happen or you can help out. One way to 
>> do that would be sample code that exercises the code paths that need 
>> to be optimized (e.g. the button rendering you posted about earlier). 
>> Preferably the sample should run repeatedly without user interaction. 
>> You should then be able to run Apple's Instruments application to 
>> profile this sample. This will help us determine what needs to be optimized.
>> /Niklas
>> [1]
>> [2]
>> [3]
>> [4]
>> [5]

More information about the openjfx-dev mailing list