JavaFXPorts with iOS

Post to Twitter

I wrote a blog post about JavaFXPorts and Android some weeks ago.

At last Eclipse DemoCamp in Vienna, Tom Schindl asked me about the startup performance on iOS, because his experience with startup performance was horrible with early RoboVM versions. I had no answer because we didn't test our app with iOS and... the question didn't get ouf of my head. Sure, I knew that RoboVM was tuned in last two versions but didn't test it myself.

So, yesterday I had the time to test it out and... Startup and overall performance was same as on Android device!
The iOS device was an iPad Air2 and Android device was Nexus9. The performance may be worse on older devices.
Performance? Application start was finished after touch event (< 1 sec).

My test wasn't as simple as expected because RoboVM has some specifics and iOS needs code signing in order to run an app on real hardware. Also my JVx library (jvx.jar) wasn't usable because it contained SwingUI and one class of it was accessing a member of a parent class:

public class JVxCalendarPane extends JPanel
{
   
    ...
   
    public void addActionListener(ActionListener pActionListener)
    {
        listenerList.add(ActionListener.class, pActionListener);
    }
}

The listenerList is a member of JComponent:

protected EventListenerList listenerList = new EventListenerList();

But the member is not available in RoboVM' phantom class. The solution was easy: Removing SwingUI from jar.
A nice feature for RoboVM would be an ignore list of classes/packages.

Here's a picture of our DemoERP application on iOS:

DemoERP on iOS tablet

DemoERP on iOS tablet

It's working :) but still, a Desktop application 1:1 on a tablet isn't the best idea, e.g. the device type (iPad) or WLAN icon is over the application menu. The iOS port has some problems with TextFields, but we'll report an issue.

Thanks to JavaFXports the creation and deployment of our JavaFX app was super easy!

Leave a Reply

Spam protection by WP Captcha-Free