By Sibers CTO Andrey Gavrilov
Recently I’ve decided to make a short review of JavaFX which represents another case of a good idea implemented poorly.
The idea behind JavaFX is very simple – developer creates an interface oriented application using some script. Then this application can be launched from a web browser, desktop, or even from J2ME.
First point: JavaFX Mobile.
JavaFX is presented as an interface oriented language, and the interface is exactly the element which is copied with guarantee during its porting to a mobile phone. Why should be an extra extension for J2ME if mobiles have the issues with capacity even without such extensions?
Second point: Competition.
JavaFX functions on the regular Java machine, i.e. user of Windows XP and its higher versions should download full Java-Runtime in order to launch it. Taking its size into account, this is almost impossible to do. Actually it is better than Mozilla XUL, which works only in Mozilla, but worse than Microsoft Silverlight, which realizes absolutely the same ideas as Java FX but on any .NET platform. All these issues put together make JavaFX less suited for work than Adobe AIR, which is a desktop Flash, and can be launched on the web without any problems.
Third point: Extra layer.
JavaFX uses Swing which is launched on Java only. While everything functions stably, it can be used without any problems, but as soon as any errors or issues arise with Silver – all Hell breaks loose. I’ve encountered similar problems during my experiments with Grails.
It’s a pity that JavaFX has these problems because I can’t wait to see a cool Open-Source Flash Killer since I don’t trust any languages with proprietary kernel.
Silver?
JavaFM?
Please check your spelling first
Silver = Silverlight.
JavaFM = some sort of radio, probably Fixed.
This is a ridiculous blog post. In the second you make a completely biased and untrue statement saying that JavaFX is better than XUL but worse than Silverlight because Silvelight requires .NET – isn’t .NET needed on the client? .NET is far bigger in size than the Java Runtime which is just 6 mb now with consumer JRE – it incrementally downloads the other parts as and when needed.
JavaFX does NOT using Swing – get your facts right!
What do you know about JavaFX mobile? It is NOT an extension to JavaME but rather a completely new runtime!
Check the date of the post. This post was based on gossips and suggestions 1.5 years ago. Things changed a lot since then. After the release we could finally tell for sure.
First, comparison with Silverlight – the key difference is: on average Windows computer, .NET is already installed while Java is not. This makes a huge difference in download size for JavaFX and Silverlight.
Second, JavaFX DOES use Swing. Look for javafx.ext.swing on the web.
Third, yes – JavaFX mobile is not an extension for JME. Currently it’s a whole OS, targeting exactly the same space as Android does.
I’m still quite pessimistic about the whole JavaFX future, though. It comes too late and there are too many competitors with strong marketing already.
-Andrey
Okay.. I agree that the date of the post reduces its relevance today.
Firstly, Java is Open Source. Period. With Java recently getting GPL’ed, it now ships with Fedora. It is also available in the Ubuntu Universe repository. Given that it is Open Source one could argue that it has a much higher chance of being included in open source OS distributions.
Secondly, talking about .NET’s distribution vs Java’s distribution..
There is no .NET on Linux (Mono sucks)
There is no .NET on MAC
There is no .NET on Solaris
There is no .NET on thousands of Sony Ericsson, Motorola, Nokia, Samsung, and many other company’s mobile phones which run Linux or Symbian or an embedded OS – but all come with Java – and in the future – JavaFX Mobile!
.NET is only on Windows and then there is a version game with .NET
Windows XP SP2 only ships with .NET 1.0 !
Most of the critical mass of .NET applications out there use .NET framework 2.0 and now 3.5 !
The worst thing is .. .NET is NOT backwards compatible like Java! – you need to install .NET 2.0, 1.0, 3.5 – all of them to run apps made for each – simply installing 3.5 won’t run 1.0 apps ! – the size of those range around 35 to 60 MB each!
With Java you just install a 6 MB runtime and run your apps comfortably – downloading more pieces of the JRE as and when needed
Thirdly, JavaFX does NOT use Swing – the API that you mention – “javafx.ext.swing” is for embedding Swing controls inside a JavaFX application! (and not the other way around!). JavaFX uses pure Java2D. Go have a look at the code at openjfx.dev.java.net!
Again, Calling JavaFX Mobile an “OS” analogous to Android would be a big overkill – it will just be a “runtime” available on handsets.
First, I’m not saying Silverlight (or .NET) is good. It just have higher coverage if you count the number of windows computers in the world. And with Moonlight and future Silverlight Mobile for Symbian it becomes even bigger.
Second, javafx.ext.swing is the only set of controls available for JavaFX. For a “click on the picture” child game JavaFX could live without Swing. But for real RIA buttons and lists are necessary.
Third, JavaFX “a Java SE and Java ME implementation running on top of a Linux kernel” looks very similar to Android’s approach in my opinion.
P.S. To be clear – I don’t like closed-source platforms too. I wish to see competitive open-source RIA engine, which could be run on mobiles. I just don’t think JavaFX could do the job.
http://channelsun.sun.com/video/software/javafx/1915439297/javafx+1.0+for+mobile/3861052001