JavaFX 1.3 Released, Improves User Experiences

This release represents an important upgrade to the product and delivers a range of performance and functional improvements, including:

* New and enhanced support for UI controls, CSS skinning, and programmatic layout
* Performance improvements in the JavaFX Runtime
* New NetBeans IDE 6.9 Beta with improved editing and an updated JavaFX Composer plug-in
* New features and enhanced performance in JavaFX Production Suite
* A native JavaFX font family called Amble
* Support for the development of TV applications, including a new TV emulator
* Availability of the mobile emulator on the Mac platform

It might be hard to believe that JavaFX has only been in the market for less than one and a half years, it certainly is for us! In that time, we’ve built out the foundation for mobile with a deployment ready runtime, delivered a library of UI controls to make it substantially easier to build out consistent user interfaces, and were able to entice developers to download over 400,000 copies of our tools by our 1.2 release. We’ve released a beta of the JavaFX Composer to provide visual-editing for form-based UIs with an exceptionally positive response and seen the community rally around the platform with projects like JFXtras, numerous blogs, and over a dozen books. We’ve also been very excited to see companies like the Vancouver Organizing Committee for the 2010 Olympic and Paralympic Winter Games adopting the technology for commercial products and services, and we’ve got another well-known customer that we’re excited to start talking to you about shortly!

But lets get back to the JavaFX 1.3 release. As we began working with some of these high-profile customers, we found they were really pushing the limits of JavaFX. Since our 1.2 release we’ve spent a lot of time carefully evaluating our performance goals to meet the needs of these customers and have heavily optimized in the following areas:

* Bind performance: 2-3x faster
* Applet start-up time: 20% faster (with Java SE 6u18+)
* Text Rendering: 5-10x faster (frames per second/FPS)
* Highly complex animations: up to 10x faster (FPS)
* Memory usage: 20-33% reduction (real-world apps, w/ Java SE 6u18+)
* UI Controls: 50% faster, 33%-50% less memory (typical)

Lets take a quick look at a few of these. Binding has often been described as one of the more powerful features in JavaFX, but many developers found they had to use it sparingly due to performance considerations. In JavaFX 1.3 we’ve implemented substantial improvements in the way JavaFX handles binding and have seen tremendous payoffs, in particular with applications that make heavy usage of this feature.

Start-up time is another area where we’ve made substantial improvements. First, it’s important to understand that we measure start-up time in two ways. We measure both cold-start (the first time a user loads an applet, includes download and initialization) and warm-start (subsequent launches of the applet). Cold-start is critical, because it’s the user’s first impression and it’s also where we’ve achieved the most improvements with 1.3. To improve start-up time, we implemented a number of optimizations throughout the stack, including the JRE and the JavaFX runtime. Basic applications running on systems with a recent version of the JRE (Java SE 6u18+) launch 20% faster and complex applications start nearly twice as fast! Obviously your mileage will vary depending on the specifics of your application.

Animation performance has been another area of focus in JavaFX 1.3. In one of our more extreme benchmarks, we applied animations to 900 objects simultaneously. In JavaFX 1.2 this would have resulted in a paltry 6 FPS. With JavaFX 1.3 we are now seeing an impressive 67 FPS – that’s over 10x faster! Unless you are using a ton of objects in your application you probably won’t see this kind of performance gain but we’ve effectively removed animations as a performance bottleneck so developers can use them much more freely in their applications. A similar benchmark with 500 animated objects managed to deliver a 5x improvement.

A key area of focus in JavaFX 1.2 was to deliver UI controls to make it easier for developers to build great looking user interfaces. This effort was very well received by the community and has actually become one of the most requested areas for continued improvement! To this end, UI Controls have continued to be a major area of focus for us with JavaFX 1.3. With 1.3, we have added and/or substantially upgraded 9 controls and have released previews for an 8 additional controls for developers to begin experimenting with in their applications. In addition, we have rewritten all of the existing UI controls to take full advantage of the new CSS support in JavaFX, making them simpler, more powerful and highly customizable. Our UI controls improvements have also yielded substantial performance gains, in particular with applications that make heavy usage of UI controls such as enterprise-class applications. While applications that use complex UI controls (such as ListView & TreeView) will be 150% faster, and consume up to 50% less memory, we achieved substantially better performance with more complex applications. For example, a 1.3 application with 200 controls uses 50-80% less memory, starts nearly twice as quickly, and runs 50% faster (comparisons are with 1.2). For developers who might have used UI controls sparingly in the past and/or avoided using JavaFX for applications that required a substantial number of UI controls, JavaFX 1.3 really opens the door to a range of new use-cases.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s