Skip to main content

Will JavaFX ultimately become a widely used rich client technology?

It's already widely used
2% (6 votes)
The version 1.3 improvements make it more likely
14% (50 votes)
16% (59 votes)
Probably not
40% (146 votes)
18% (67 votes)
I don't know
11% (41 votes)
Total votes: 369


Good technology. Bad licensing. Not enough community feedback.

As a technology I think JavaFX is fantastic. In fact, I prefer it over Flex. However, the licensing makes it unusable for anything more than trivial examples on blogs. Oracle claims they're reviewing it, but I can't find any information that's less than a year old. The really frustrating thing is that I feel like the restrictive licensing is stifling the creation of improved build & deployment tools. No one can create a proper Maven plugin, no one can create a proper install builder, etc..

Why probably not

The problem with JavaFX is that it requires a JVM in the client. The user has a platform, he wants programs that can simply run on that platform, and period. If they have to install something just to enable a program, they become at least upset, if not irritated. Sometimes Java comes preinstalled, such as Java ME. The problem with Java ME is that it's not built with partnership with platform providers. Sun done it alone without asking much. For this reason, it's usually is slow and does not offer access to all nice and up-to-date platform features. Now Android is an entirely different situation, where there are strong cooperation between platform provider and development environment provider.

I'm not telling that Java or the JVM is bad. The language is excelent and the JVM is state-of-the-art for general computing. But many applications just don't need a state-of-the-art JVM. They need to be well integrated with platform and easely installed. That's why Swing really sucks and SWT is nice. SWT can show the native Windows open dialog, while Swing shows a ridiculous, XP-like emulated open dialog. It's really nonsense, like many other things in Swing and Java.

What Oracle should really do is open Java for better platform integration, like Google did with Android and GWT. You program in Java, it even generates class files, but what really is deployed on the client is very simpler and platform specific. Oracle could also embrace SWT and stop growing Swing, because Java is not, and it never actually was, a platform itself. The Java as a platform may work on a server where everything you need are CPU, memory, sockets and file system, but it of course won't work for desktop nor web or mobile applications, because there you need a strong integration with platform and small, easy, swift installation.

Sun never learned the lesson. They though that programmers should be prevented from coding platform specific software, but doing so they actually removed choice from Java programmers. Fortunatelly, we saw companies like IBM ( and Google providing other ways for using Java. Even UNIX nerds from GNU developed GCJ, which generates native executable from Java programs! If Oracle wants Java to be really universal, they should provide choice, not stick with dumb filosofies. Sometimes, it's not that we WANT write platform specific code. We may actually NEED this, and can't wait for Sun detect when it's "ubiquitous" to provide a fat layer over the feature.

Conclusion: I will start to believe in JavaFX when they manage to provide all the bells and whistles without forcing a JVM to be swalled in. JavaFX should work directly for Android, HTML with JavaScript and HTML5. I'm not against tools that read pure Java classes and translate them to JavaScript or Dalvik. That's just what I ask!

maybe....maybe not

I'll use it when I can code with it in Java.
From JavaFX, I almost got the FX, now I want the Java.

Olivier Allouch

Depends on the license

Depends on the license.

I have already said it very often:

JavaFX have the wrong license:

If you want something like JavaFX, then take Nokias QML, which is LGPLv2 and GPLv3 together with the the other stuff of Qt.

And here the interesting part of the JavaFX license (since JavaFX 1.3 only the word “Sun” have been changed to “Oracle”):

5. Restrictions.

(a) The copies of Software provided to you under this Agreement are licensed, not sold, to you by Oracle. Oracle reserves all rights not expressly granted. (b) You may make a single archival copy of Software, but otherwise may not copy, modify, or distribute Software. However if the Oracle documentation accompanying Software lists specific portions of Software, such as header files, class libraries, reference source code, and/or redistributable files, that may be handled differently, you may do so only as provided in the Oracle documentation. (c) You may not rent, lease, lend or encumber Software. (d) Unless enforcement is prohibited by applicable law, you may not decompile, or reverse engineer Software. (e) The terms and conditions of this Agreement will apply to any Software updates, provided to you at Oracle's discretion, that replace and/or supplement the original Software, unless such update contains a separate license. (f) You may not publish or provide the results of any benchmark or comparison tests run on Software to any third party without the prior written consent of Oracle. (g) Software is confidential and copyrighted. (h) Unless otherwise specified, if Software is delivered with embedded or bundled software that enables functionality of Software, you may not use such software on a stand-alone basis or use any portion of such software to interoperate with any program(s) other than Software. (i) Software may contain programs that perform automated collection of system data and/or automated software updating services. System data collected through such programs may be used by Oracle, its subcontractors, and its service delivery partners for the purpose of providing you with remote system services and/or improving Oracle's software and systems. (j) Software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility and Oracle and its licensors disclaim any express or implied warranty of fitness for such uses. (k) No right, title or interest in or to any trademark, service mark, logo or trade name of Oracle or its licensors is granted under this Agreement.

6. Java Compatibility and Open Source.

Software may contain Java technology. You may not create additional classes to, or modifications of, the Java technology, except under compatibility requirements available under a separate agreement available at

The problem is, that people think about Java, if they hear JavaFX. But Java is as OpenJDK OpenSource under the GPL+GNU Classpath exception. JavaFX have “only” the compiler as OpenSource under the GPL without GNU Classpath exception. And the runtime of JavaFX have that stupid license.

And if you want to know, what is QML:

Hopefully there comes better news about JavaFX on JavaONE 2010.

And I know, that JavaFX is for RIAs. But you need everytime a good internet connection to If the side is down and you haven't JavaFX in your cache, then no JavaFX app in the whole internet work.
Additional some people want to use RIAs offline and give it as normal offline programs away.
Giving a Flash app with Flash away is no proplem. Same with a Silverlight app and the Silverlight runtime. But the JavaFX runtime you can only copy one time for archive reasons.

no table control

without table control, not