Well we have spent some time now playing with and investigating JavaFX.
I wont go over some of the big positives I recently discussed but instead will focus on one particular topic – GUI components (or simply referred to as ‘components’ for the rest of this post).
Well here is the problem with JavaFX version 1 release and components – that is the lack thereof.
What is there then?
Well, there are some (certainly not all) wrapped Swing controls – these are the components in the javafx.ext.swing package, then there is the JavaFX native javafx.scene.controls.TextBox and finally a couple of layout classes in javafx.scene.layout.
But this is nowhere near what I would call complete and a long way off what Sun are intending regarding a component set for JavaFX.
The problem seems to be we are stuck somewhere between using Swing components (which are wrapped in JavaFX classes to achieve such niceties as data binding) and using native JavaFX components which are intended to be nicely skin-able.
There are a couple of issues with the Swing based controls: 1) they are not style-able/skin-able and 2) they will apparently not be available on the mobile platform.
The issues with the native JavaFX controls is simple… they only have one so far!
These native controls will be great and provide the all important skin/style-ability.
So where does this leave us?
I for one am eagerly awaiting Sun to provide a full set of JavaFX native components. When this happens, I don’t really see the benefit of making use of Swing based components. In fact it feels like Sun have only created a few Swing wrappers simply to provide some components for this first release. Will there be any benefit of have two distinct lines of components (Swing and native JavaFX)? I dont really think so.
It is vital Sun address this matter more than any other if they wish to see widespread adoption of the technology.
Its a shame the first release didn’t have a full set of components as this is often one of the more important aspects of general uptake.
One of the first things developers will ask themselves is “How good are the GUI controls and layout classes?” and “Are these controls easily skin-able?”. At the moment the answer would be “Not good enough yet.”
“Yet” being the important word to take though. I am sure Sun will sort this out. In fact in a way I am pleased they didn’t rush a set of components out.
Anyone who has worked with Flex (mx components) at any serious depth for any serious length of time will know one thing – they are buggy as hell! The mx components (if you go back to Flash) have been re-written no less than 3 times from the ground up!
The latest iteration being in Flex Gumbo, not yet released. So not speaking for Gumbo as I have yet to review it in depth, but all previous mx components have been rushed and poorly written (hence the re-writes rather than fixes).
The ball is firmly in Sun’s court. The next release will be a vital watch point.

Entries:
Comments:
User:
Amy Fowler
February 5, 2009 // 5:45 pm
Hi Jethro – we hear you — FX UI controls are a big priority for us and we are working on it as we speak.
The one place I might quibble with your post is that we do see value in Swing/FX integration, as this provides a way to leverage a huge amount of existing Java code and expertise (a key benefit of FX over competitors).
Aim
Richard
February 5, 2009 // 5:52 pm
Really, thanks for posting this, this is exactly the way we feel. Components (both visual controls and non-visual components) are crucial for real application development. Our feeling has been, better to get beat up and wait a bit and do a proper job than to rush something together just to say we have controls.
Jethro Grassie
February 6, 2009 // 8:32 am
Hi Amy, yes you are correct and well worth pointing out!
We have loads of Swing based stuff hanging around.
Jethro Grassie
February 6, 2009 // 8:37 am
Hi Richard, indeed, and its this sentiment I personally am quietly pleased about.
We are really eager to see some decent competition in the whole RIA space. In particular, stability, work-flow, platform support and ease of use.
When the components are there, jfx will be much nearer to real-world usage.
Olivier Allouch
February 6, 2009 // 10:01 am
Amy, I think it’s a shame how Swing is left behind and I like the idea of a Swing 2, but I want you to know that what I really want is to wait for the new JavaFX components. I don’t think they’ll be written in JavaFX Script
, so we (Java coders) may get something out of them, even if we have to wrap them in a simple and elegant API, just like your JNxxx API was.
Phillip
February 19, 2009 // 4:27 pm
Hi Jertho
I totally agree with you. We use Java for our GUI development and have been spending a lot of time investigation Flex, Sliverlight and Javascript for our RIA development. We have been leaning towards javascript as there are a lot of components out there such as extjs or gwt.
Then JavaFX was announced and after spending time looking at were disappointed for the same reasons as you. Sun has to match the GUI components there are available for the other RIA tools (Microsoft and their partners are building a large number of components for Silverlight) before we make a decision on JavaFX.
Also a decent GUI builder would help accelerate the building of JavaFX GUI applications.