Saturday, 5 September 2009

JavaFX - First impressions

I have just started following a free online course from the Java Passion series (by Sang Shin). If you are also interested in joining, visit

This post is to cover my first impressions of JavaFX (1.2), using my new MacBook (Mac OS X 10.5.8 Intel Core 2 Duo with 2Gb RAM).

My previous experience has been heavy use of Java with Swing for client-side programming and the Spring framework with JSP for server-side programming. I decided to increase my knowledge by learning how to program the iPhone and in addition learn JavaFX (which currently will not run on the iPhone - damn!).

Having no ties to Sun, these posts will be independent and may contain positive and negative views of Java FX and associated technologies.

By following the link for using Firefox 3.5 on my Mac crashed FireFox the first time I visited the page. I have re-visited the page today to make this post and I am now receiving the message "An applet from '' is requesting unrestricted access to your computer". Impact - Poor user experience. Solution - This could be FireFox 3.5 that experienced the problem, so perhaps there is nothing that Sun could do here, but an explanation or warning that I need to accept the request to download the applet should have been provided, additionally why does the applet on subsequent visits to the page require unrestricted access to my computer - this makes me nervous, surely only certain applications I launch should ask for higher permissions? Impact - Concerns over security, Solution - Explain this up-front, or make it so that site does not require full permissions. Should I allow the option to 'Allow all applets from access'?! - Well I've now said yes.

After my first visit to I was asked for my admin username and password within the Mac OS to install the Java FX runtime, I was surprised to find that I was not shown any progress bar or indication that the installation was happening - it looked as though it had failed.

The bottom third of the website was a solid blue region with no indication that Java FX was not installed and then suddenly I noticed that this area became populated and Java FX was working. Impact - Poor user experience. Solution - A simple progress bar or 'installing' splash screen.

The headings on the website are 'Explore', 'See' and 'Learn'... Okay, is it just me that doesn't know the difference between 'explore' and 'see'? Is it obvious to you which one the samples are in? Wouldn't it be better to call it 'samples'? Explore actually gives you some marketing blurb, a break-down of what it is with a 'learn more' link, that takes you to a completely different page than the main 'Learn' button. Impact - User confusion. Solution - Yes I know this really is a pedantic thing, but simply naming the main buttons makes it a cleaner first-impression.

Within the 'see' section (sorry 'samples'), you find plenty of samples. But, in my opinion lots of them look amaturish and they are embarrasing to show as examples of how powerful JavaFX can be. Impact - Makes Java FX look crap, Solution - Move all the basic ones to a developer section as learning aids and only keep the professional looking samples. One of the samples is a video, very highly compressed, this makes video support look bad - I'm sure they done this for bandwidth reasons, but it does look poor from a user perspective.

Whilst viewing some JavaFX samples, I scrolled the browser window using the scroll-button on my mouse. During the scrolling the pages were flickering and sometimes the video seemed to disappear until I scrolled slightly further. Impact - User disappointment, solution - I guess we just have to wait until JavaFX has matured a bit, or this could be a FireFox / Mac only issue.

Whilst trying to use the JavaDoc for the first time, I was reasonably impressed with the contents of the documentation, but the user-interface seems as clunky as hell, for example, clicking on any subject causes the tree-view of the topics to jump back to the top of the screen, in fact, I'm sure it's a full page-load, shouldn't this be using AJAX by now? Also, the font's seem too big and stuff just generally takes up too much of my screen real-estate. Impact - Makes using Javadoc slow, solution - offer the typical javadoc view, it is fast, clean and good-enough, you don't have to JavaFX'ify everything you know! Oh, and a little bug in Netbeans 6.7 could be that if I select a JavaFX keyword and then right-click and choose Javadoc, it does nothing. I then try to visit the Javadoc search window and it ends up searching endlessly - never completing.

NetBeans seems to have good support for the language, the auto-completion worked a treat and the code is very easy to read - I'm very impressed with this bit. My only criticism would be that there's no built in visual editor at this stage, I certainly don't want to use Photoshop to generate a simple form and export the artifacts for integration. Although there does seem to be a program called 'DataBox' that I will be trying out soon, visit DataBox.

I've written a note on a post-it note, that says "Warnings of unrestricted access x 2, one after the other", but unfortunately I can't remember what this was all about, but I know I was thinking at the time 'This is not a good user experience'.

I did find some of the branding confusing, one minute we are on a site talking about JavaFX, then the next minute there are popups about Java Web Start and then JNLP launchers and then applets... what exactly is the user supposed to call them? Even in the samples I couldn't work out whether the ones embedded in the browser were 'applets' or 'java fx' plugins and those that popped up outside the browser were... erm, applications through web-start? Problem - confusing message, Solution - call everything Java FX and make the samples launch them all the same for consistency.

When launching the samples, some would cause a dialog to be popped up with the percentage complete, then launched in a separate browser not in-line with the page, this meant I also ended up with lots of .jnlp files in my download directory... this is messy for the user and means that I need to clean up afterwards. Solution - perhaps these .jnlp files should be in the temporary internet files location unless the user chooses to 'keep' the download?

So my overall first impressions

JavaFX language - 9 out of 10

User experience - 7 out of 10

Quality of samples - 3 out of 10

Developer support - 9 out of 10 due to lots of samples, online documentation and the JavaPassion resource.

So, if I only had one sentence to wrap up my feelings "Java FX is very satisfying from a developers perspective, but needs some polish for the users experience to improve".

Thanks for reading my first post, please post comments to keep me motivated!



  1. Rob,

    You're a true legend. This was very helpful :-)

    Keep them coming.

    Many Thanks

  2. Hey Rob,

    Thanks man. I too have just started with JavaFx and you have succinctly put into words my first impressions of the JavaFX Website, which, of course, I couldn't describe as well as you do :-)

    Hope to read more from you.


  3. There's nothing pedantic in noting UX issues. While I hadn't noted half the issues you had, I am relatively new to Java per se, so when coding in JavaFX and a newbie at that, JNLPs, JVMs, JDKs, etc etc confuse the heck out of me.

    If JavaFX is able to divorce itself from its JAVA background and convincingly present itself as a scripting language, it's likely to pull in a whole lot more adherants.

  4. All fair points apart from the bit about XML. The widespread use of XML alongside Java is precisely because Java is so bad for programming in a declarative style. JavaFX fixes that. Why would you use an irritatingly verbose document format to write programs instead of a purpose-built declarative programming language? His trivial example looks fine but doesn't contain any code to perform actions, only declarative layout code. How would he propose to encode that in XML? XML makes a very bad programming language as anyone who's worked on a moderately compliated Ant build will testify.

  5. Hi battery, I am a little confused by your comment... in my original post about 'JavaFX - first impressions' I do not see any mention of XML - am I missing something?

    And welcome to SpikyOrange ;-)

  6. Rob, thanxs for your comments... I started in JavaFx, i think so that it's a great idea because swing and applets in Java don't work very well in compare with flash technology.

    Please continue with your interesting blog.

    Best Regards..

  7. Interesting article, added his blog to Favorites