JavaFX, backwards compatibility, and the path forward

JavaFX at JavaOne impressed me. It is the first time I saw how things could come together to allow for the easy development of applications with both enterprise and consumer user interfaces alike. The combination of the Caspian look and feel, the components, and the team sold me a compelling package. To be clear, JavaFX isn’t ready to be used in many circumstances, as the number of components is too bare, but I am satisfied that this will be rectified in the coming months.

This being the case, and given that JavaFX has been blogged to death, I want to instead cover my opinion on how I believe JavaFX should proceed. I discussed this with a few people from Sun, and I wanted to get the pulse of the (JavaFX) nation on this issue. Let’s be clear – Sun read blogs where there is discussion. I know for a fact the Swing 2.0 discussion from a while ago was heavily discussed internally. I would very much like to see what kind of discussion we get out of this post.

The general question is which path should the JavaFX API take ? Anyone who knows me knows that I like clean APIs, simply for the sake of code cleanliness. You should therefore be able to easily work out my preference 🙂 The options are below, but if you have any other suggestions, please post a comment.

Option 1: Evolve the API over a number of releases, but never remove methods

As demoed in James Gosling’s Toy Show, there are now apps out there using JavaFX, and JavaFX is a publicly available API with a lot of marketing behind it. There are books in production and already released that explain the API as it currently is. To set the API in stone now would give people more certainty that they should start to commit to JavaFX in their systems. This doesn’t stop the API from growing, or for old methods to be deprecated. This is what we have in most API’s – and it is possible that the end result is a hugely convoluted API (need I do the *cough*Swing*cough* thing, or was it too obvious anyway?).

Option 2: Clearly state the API is undergoing change, but promise API stability for a future release

This is what I call the ‘Google Collections’ approach, as it is what Google have done with their collections API. In this approach, Google has been very, very clear that their upcoming 1.0 release will be a 100% stable API that will not change. They have also been very, very clear that releases leading up to the 1.0 release will potentially have huge API changes. The benefit of this approach is that when 1.0 is released, the public can be certain of a completely stable, and clean / polished API. The downside of course is that early adopters are burnt on releases.

My preference is for the later. I want a clean API that is going to last for a long time. I want to see Sun publicly announce a roadmap for the next x months which will culminate in a stable, rock solid, and clean API that will last for the foreseeable future. As things stand, there is no clarity on what will happen next with the JavaFX API, and I think that is at least partially because the public has not yet spoken. If we don’t speak up soon, it’ll be too late.


Java Desktop links of the week, May 31

A little early this week, given that I’m travelling to JavaOne tomorrow, which is when I’d normally write Java Desktop links of the week. Somewhat expectedly, it is another quiet week.

To everyone: have a great week ahead. If you’re going to be at JavaOne I’m looking forward to catching up with you, and if you aren’t, then I, along with about 20 other people are going to be publishing ‘JavaOne Minutes’ – short video posts / interviews with people we meet at JavaOne. You can watch them at Youtube here .

On with the news:





  • Andres Almiray let me know that Jim Shingler has announced the first public release of gConfig 0.1 , a configuration tool for Griffon , a Groovy Technology.
  • Speaking of Andres (you’d think he had a vested interest in Griffon), he also let me know that Geertjan Wielenga has been busy getting tooling support in NetBeans 6.7 for Groovy and Griffon. He outlines what he did in two blog posts .

That’s it for this week. Note that there won’t be a Java Desktop links of the week next week as I won’t have been able to track the news whilst I’m at JavaOne. I’ll try to do a catchup post once I’m back, but there are not guarantees.

So, have a great week, work hard, but make sure you spend some time relaxing and enjoying life. And for those of you attending JavaOne, see you soon!

Java desktop links of the week, May 25

A pretty quiet week this week, as everyone is building up to JavaOne I guess. Regardless, there has been some things worth noting. So, for another week, let’s get started on the news that’s going on in the Java desktop world.


  • I haven’t really covered it here at all, but over the last week Sun announced Project Vector, which is essentially an app store for Java / JavaFX applications. It has the potential to be a huge player in the app store market, given the wide availability of Java. Jonathan Schwartz has a good overview of what it is that they are doing , and Mikael Grev today posted his thoughts on the hurdles ahead for Sun . To be fair, I haven’t given the app store concept much attention. I think it could be a hugely beneficial thing for the Java ecosystem, and could truely help to re-invigorate desktop Java. I hope for this reason that it is a huge success. So, my call to everyone who reads this – do your best to seriously consider the Sun app store. Make it clear to Sun that desktop Java is huge, and needs their attention and support.




That’s it. Have a great week, and for those of you coming to JavaOne, I look forward to catching up. Thanks for all the emails about wanting to catch up – it’s going to be a great week!

Java desktop links of the week, May 18

Wow. This week a lot of other Java toolkits get a mention, including SWT, Pivot, Groovy, and QT Jambi. Things are feeling a little splintered in the Java desktop world (which to me is a little sad – I’d much rather everyone get behind one or two libraries instead of needlessly duplicating effort). Despite this, it’s open source, and people are welcome to scratch their itches.

Without further ado, here we go – I hope you enjoy!






QT Jambi

Apache Pivot

Have a great week everyone.

Java desktop links of the week, May 10

Hey everyone. This post is going out a bit early as I’m actually away at my wifes graduation from vet school. I apologise that I am not as up to date as could be – I promise to have a better post next week! Regardless, I hope you enjoy!


  • Alexander Potochkin posted a short blog post updating people on the state of Swing tech in JDK 7 . In short, Nimbus (as we know) has been merged, and JXLayer is likely to be merged shortly. I have made extensive use of JXLayer in my projects, and highly recommend it. Some examples of JXLayer code can be found here .
  • Talking about Java 7, Kirill Grouchnikov released a video showing an animated JFrame which makes use of the Window.setOpacity() API which is new to Java 7.
  • Alex Ruiz posted announcing the release of FEST-Swing 1.2a1 .FEST-Swing is a Java library that provides a fluent interface for functional Swing GUI testing. This library provides an easy-to-use API that makes creation and maintenance of GUI tests easy. Version 1.2a1 is the first out of three alpha and three beta releases planned for version 1.2. This new version focuses on new features and improvements.
  • Christophe emailed me to let me know of BeanTableModel , which is a dedicated  binding solution (bi-directionnal) between POJO and a TableModel, where all configuration is done by java annotations.
  • I was looking for a Swing-based system tray library this week, as the API made available in Java 6 is AWT-based, and looks ugly. After much searching, the best code I could find was from the fishFarm project, and is an extension of other similar projects to try and remove various operating system quirks. You can find the single class, called JPopupTrayIcon, here .
  • Maxim Zakharenkov emailed me to let me know that Swing Explorer 1.4 has been released. As always, It can be found on the downloads page.

J avaFX

That’s it for the week. Keep up the hard work 🙂