FX Experience Has Gone Read-Only

I've been maintaining FX Experience for a really long time now, and I love hearing from people who enjoy my weekly links roundup. One thing I've noticed recently is that maintaining two sites (FX Experience and JonathanGiles.net) takes more time than ideal, and splits the audience up. Therefore, FX Experience will become read-only for new blog posts, but weekly posts will continue to be published on JonathanGiles.net. If you follow @FXExperience on Twitter, I suggest you also follow @JonathanGiles. This is not the end - just a consolidation of my online presence to make my life a little easier!

tl;dr: Follow me on Twitter and check for the latest news on JonathanGiles.net.

Welcome JavaFX 1.3

JavaFX 1.3 is here!

With the pushing of the bits yesterday, those of us on the JavaFX team are finally able to talk about the work we’ve been doing for nearly the past year (has it been so long?!). A tremendous amount of work from many skilled engineers has gone into making this release the fastest, richest, and most productive release of JavaFX to date. Ok, so we’re somewhat biased :-).

One of the things that has been gratifying about working on this project is that each release of JavaFX gets an order of magnitude better than the last. The compiler team has done amazing work in this release related to both raw performance and also dynamic footprint (the amount of memory used by each JavaFX object). Both the 1.2 release and the 1.3 release bring us a lot closer to the type of performance we know the Java platform is capable of.

Stephen Chin posted a great top ten list yesterday about features that have gone into 1.3. We’ll be posting our own list shortly, which ranks things a little differently but is essentially a lot of the same stuff :-). We’re also going to be posting a lot more detail about these features in the coming weeks.

In addition to all of these new features, we spent a significant chunk of time early on in this release working on “technical debt” we’d acquired prior to and including the 1.2 release. We had been on such a pace that various bits of underlying infrastructure and architecture needed some real TLC. In 1.3 we paid down that debt and are really well placed for future improvements.

A lot has been said in the past about “bindstorms” — a term coined to refer to situations where simple applications with liberal usages of bind would come to a screeching halt. Immediately after 1.2 was released we set to work planning for and making the changes necessary to quell these storms. In a future post we’ll go into detail about how this was done, and what this means to you as a programmer (summary: you pretty much get it for free).

Another area where we paid down technical debt was in the underpinnings of the scenegraph and how it was ported onto different platforms. The TV and desktop implementations of JavaFX share a tremendous amount of code which as an engineer is really great to see. For the most part, the TV team has been able to focus on the deep integration with the system and hasn’t had to worry about the scenegraph implementation at all.

The big compiler rewrite was a huge deal in this release. You can now create thousands and thousands of Nodes in your scenegraphs now without running out of heap or overly stressing the system. The new compiler implementation really puts us in a great spot going forward. There might be a few hiccups with tooling for a couple months but we’re ironing all those bits out as fast as we can.

The other major improvement in this release that really cannot be overstressed is the work that was done with CSS and being able to style all of the controls from CSS. We’ve taken standard CSS and added a couple powerful concepts (which I would love to see HTML CSS adobt back) which really make styling of controls very elegant.

The layout system was another area that got a lot of attention in this release that we are really pleased with. In previous releases there was a tension between container-based layouts and bind-based layouts. In this release, we’ve adjusted a few of the semantics such that the two different layout methodologies share the same basic semantics and behaviors. We’ll definitely be posting more about this as time goes on (I’m sure Amy has something in the works already).

Existing controls such as ListView and TextBox got significant new features. The ListView now has support for custom cells, which are capable of doing just about anything. And its fast. We actually improved the performance of this control by 50% while adding tons of new richness and functionality.

The TextBox can now be configured for either single-line or multi-line text input. It still isn’t rich text (bummer), but for basic text input this Control is now ready for business.

Lots of work went into preview controls (of these the TreeView is one of my favorites), new controls (PasswordBox, ToolTip, ScrollView, Separator, more), and improving existing controls (Slider, ProgressIndicator, more). The Skin implementations for all of the controls were completely rewritten. They are now about 20% of the size of the old skins and all the visuals are now defined in CSS — which means that you the developer or designer have tremendous leverage in giving the controls all new styles.

After all is said and done, the best thing about JavaFX is the programming experience. From the language to the APIs, things fit together well and are a joy to use. We work on this project because we love to build great technology and are committed to making each release better than the last. If you have bugs, feature requests, or optimizations please file issues in our issue tracker.

So what are you waiting for? Download JavaFX today!

JavaFX 1.2.1 Plugin for Eclipse Released

The marketing folks at Sun email me when things are being announced. They just let me know that a new JavaFX plugin for Eclipse has been released. As per the announcement that’ll sooner or later turn up on the official JavaFX blog:

A new version of the JavaFX Plugin for Eclipse IDE has just been released! This latest version is based on the JavaFX 1.2.1 SDK and supports Eclipse 3.5.x IDE.  Read the Release Notes to learn more about the changes made since the June 2009 release. Download this latest version using the instructions in the Getting Started document.

Let us know what you think of this new release by providing feedback on the Feedback Forum for JavaFX 1.2.1 Plugin Release page.

So, please, give it a whirl and leave feedback on this post if you like it, wish it were better/different, etc.

JavaFX links of the week, December 21

Here we go again with another week of the best and most important JavaFX links that we could find on the net. We hope you enjoy, and find them useful.

  • After a successful first presentation with Richard Bair at the Silicon Valley JavaFX users group, next up to bat is Amy Fowler. She’ll be presenting about layout secrets in JavaFX on January 13. Note that the venue has changed – it is now being hosted at Sun. As with the first presentation, you don’t have to be physically in California to attend – video is broadcast live, and there is an associated chat room. You can find me, as well as a number of other JavaFX developers, in there during the presentation.
  • This week a preview release of the JavaFX Composer / Designer plugin was released for NetBeans. Overall peoples reactions are positive, with the only complaints seemingly coming from people expecting this release to be final and / or fix all issues related to JavaFX.
  • If Eclipse is more your scene, check out the early progress on a visual designer for Eclipse, which is being developed by Exadel.
  • Dean Iverson posted a very interesting article investigating how to create custom controls in JavaFX, making use of Caspian code for colors and state transitions  (i.e. subtle animations). The only downside is that we’ve changed how things work for JavaFX 1.3, which should make this kind of thing much easier.
  • Congratulations goes to Jeff Frieson for winning the latest JavaFX coding competition. This months theme was ‘holiday’, and you can see the winning entry at JFXStudio. Next months competition will be announced on new years day.
  • Speaking of Jeff, he has posted an article discussing how to play with perspectives in JavaFX to attain various effects. You can also find a lot more of this kind of material in the ‘Pro JavaFX Platform’ book published a few months ago.
  • If you’re wanting to display PDF’s from within JavaFX, today’s your luck day, as JPedalFX is a LGPL-licensed JavaFX PDF viewer. I’m not sure what is going on under the hood, but I’m guessing it’s probably a wrapper around a Swing-based PDF viewer. Please, correct me if I’m wrong, but just keep in mind that this limits the portability of your JavaFX app (both to mobile/tv devices, as well as to the prism graphics stack).

Catch you all again next week.

JavaFX links of the week, December 14

Welcome back to JavaFX links of the week. There have been a few interesting bits of news this week, so let’s get right into it.

That’s us for another week. If you know of any JavaFX news that you think is worthy of being included here, please email me and let me know. Catch you all in a weeks time!

Inkscape has save as JavaFX support

Inkscape has save as JavaFX support


The new Inscape 0.47 has a very cool feature, it can save any drawing as a JavaFX file. Inkscape is a open source vector graphics editor, with capabilities similar to Illustrator or CorelDraw and is based on the standard SVG file format. It will save out your drawing as a JavaFX source file that contains a subclass of CustomNode which has all the graphics from your drawing in it. Its a shame it only supports JavaFX source files and not FXZ files as they can be loaded at runtime without the need to compile them. Maybe the next release will support FXZ as well as it should not be hard the formats are very similar. Even without FXZ support this is an amazing addition and I am sure will prove really useful to a lot of people working with JavaFX.

So go download it now and have a play 🙂