We’ve just rolled out another JavaFX 2.0 beta build (build 37) to get you access to FXML as quickly as possible (rather than wait until next weeks b38 release).
FXML is a scriptable, XML-based markup language for constructing JavaFX user interfaces. It is an alternative option for building your user interfaces, in addition to using Java, or any other JVM-based language (or a wrapper like GroovyFX). To quote the JavaOne session abstract on FXML: “The hierarchical structure of an XML document closely parallels the structure of the JavaFX scene graph, making it easy to visualize the resulting output. Event handlers can be written with any JVM-compatible scripting language, such as JavaScript, Groovy, or Clojure. Additional features include on-the-fly localization, dynamic data binding, and code modularization.”
Whilst we rolled out b37 as soon as we could to get you access to FXML, we are still working on a sample of how to use it – and this will be in the next public beta build. Additionally, we are busily working on plenty of documentation on how to use FXML which will become available in our documentation area as soon as it is ready. Who knows, if there is enough pleading in the comments on this blog post, maybe I can try to get someone to write a blog post here about the wonders of FXML 🙂
Of course, along with b37 including FXML, it also contains a weeks worth of bug fixes, performance tweaks and necessary API changes (based in no small part on your feedback to our Jira tracker). As always, I look forward to hearing your feedback on this latest release. The best place to discuss JavaFX 2.0 is at the OTN forum, where many of the JavaFX team lurk. However, file your bug reports / request for enhancements directly to our Jira tracker if you want to maximise your chances of being heard!
It seems there is an installer error (Win32), the runtime leaves the .pack.gz files in lib without uncompressing them. Then I manually decompressed with gzip and unpack200, but still got the same failure to run the samples. Good thing that the runtime inside the SDK is good, so I can play with this.
I see once again that the runtime installer is much smaller (but I hope that’s not just because the build failed to include two megs of the runtime hehe…)
Most important, the perf of controls is improving drastically. My animations like JavaFX Balls were fast since the EA’s, but performance of a control-centric test, e.g. a window with a TableView being scrolled or resized, was totally horrible as recently as b34, and now it’s very fast. 🙂
I’m pleased you’re noticing the performance improvements Osvaldo. We’ve got at least two more improvements already developed and in the pipeline. They should be hitting public builds in stages, most likely in b38, b40, and b42. In particular, these improvements improve both memory and CPU performance considerably in controls based on Cell virtualisation (ListView, TreeView, TableView). We’ve spent a lot of effort to tune these, and have some very nice results.
Of course, performance tuning is a never ending thing and we’ll be tuning for a long time to go!
In our company we use JavaFx for the GUI for Ticket Vending Machines. Particularly we developed a generic interface that was stylable with the idea of using the same code for different projects. However the ticket selection process is always very project dependant so I create an XML which was readed at runtime that creates the selection scene. That XML was also modified at runtime when parameters change.
When I read in your previous post that you have included built in support for FXML I started thinking about replacing my hand made scripting. Another way can be using GroovyFX or something like that (there are more options in JavaFX 2).
My question is, the FXML is going to be only a language to create graphical interfaces, or is going to have the posibility to make some scripting on it?
I’m just going to copy from some internal documentation on the ability to script within FXML:
The <fx:script> tag allows a caller to import scripting code into or embed script within a FXML file. Any JVM scripting language can be used, including JavaScript, Groovy, and Clojure, among others. Script code is often used to define event handlers directly in markup or in an associated source file, since event handlers can often be written more concisely in more loosely-typed scripting languages than they can in a statically-typed language such as Java.
I hope that helps to answer your question 🙂
Also, we’re working on a lot of documentation on FXML – so soon enough you’ll get to learn all the nitty-gritty of what you can do in FXML (it’s actually very powerful!).
I’m waiting to that documentation to hack a bit, but it seems to be a really interesting feature. Migrating code from JavaFX Script to JavaFX 2 takes time, but it’s worth doing it. You are doing a great job with this version!!
Jonathan;
Will you direct us to a URL featuring usage of FXML? Thank you.
TA Hubbard,
As was briefly mentioned in the blog post, samples and improved documentation is forthcoming. The first samples should hopefully hit public builds shortly.
Patiently waiting! Patiently. This is the turning point. I can see the Netbeans Matisse builder being refactored to support this easily, It already uses XML so it’s half there. time to rock and roll!
Call me when it runs on Linux
very excited about fxml and the forthcoming documentation for it!
Any idea when the Mac version will be available?
+1, still waiting…
Actually the grahics and display are all broken for me in this version when I use charts. This happens also in “ChartSampler” and “SwingJavaFXChart”. “Ensemble” seems to work Ok though.
I am off the to Jira!
Initial documentation for FXML can now be found at http://fxexperience.com/2011/07/introducing-fxml/
Hope that helps get you all started!