Skip to main content

JavaFX != JavaFX Script

Posted by joshy on September 10, 2007 at 7:37 AM PDT

I recently gave a presentation at the Portland Java Users Group about Java FX. After talking to some of the fine members of PJUG I realize that there is a lot of confusion about JavaFX and JavaFX script. JavaFX Script is just one part of the larger JavaFX umbrella. In fact, you don't even have to use JavaFX Script to gain many of the benefits of JavaFX! This weblog posting is my attempt to clear up a few things and get you excited about the future of client Java. After reading it I hope you will come away with a better understanding of what JavaFX is and why we created it.

What is JavaFX?

The marketing definition of JavaFX is a set of products and technologies for creating rich user experiences.

So what does that mean in non-marketing speak? It means we are producing a bunch of new stuff that focuses on the client side; on the user. This means both new technologies for making great looking new applications, and improvements to existing technologies to make them better. JavaFX is radical improvements to client Java so that we can build the apps of the future. I really prefer the term User Experience here rather than User Interface because it's more than just the GUI components and eyecandy. It's also the experience of installing Java, running Java apps, and getting updates. It's about speed and reliability. It's not just about the creation experience, but also the runtime experience. All of these are important parts of your user's 'experience', even more than the UI widgets.

Why is Sun making JavaFX?

We are making JavaFX because we want to build the apps of the future. What you think of today as 'client Java' is the UI components that make up JavaSE like AWT, Swing, and Java2D. JavaSE is great. It's a stable mature platform, now deployed on 91% of PCs. There are more than 50 million downloads of the Windows JRE each month. We've been working on JavaSE for more than a decade and it's great for making enterprise desktop applications.

However... (you knew there had to be a however) until now, we haven't really focused on consumer applications. And consumer applications are changing. We can see some of it already in some native Mac OS X apps. Lots of smooth animation and graphics interwoven with network services, user created content, and a good dose of eyecandy. And don't think it's all bling. Studies have shown that eye-candy can actually make users more productive when used properly.

The apps of the future are things like iPhoto, Twitter, Dashboard widgets, and high-res book readers. Apps that exist both locally and on the network. Apps that have collaboration as a core feature. And, perhaps most importantly, apps that just look & feel awesome! The apps of the future are Filthy Rich Clients. The apps of the future live on the desktop, phone, web, and TV. And eventually on new gadgets that we haven't thought of yet.

So JavaFX is the new stuff that lets us make these kick-ass apps of the future. Yeah, I like that definition better.

Okay, so what makes up Java FX?

As I said, JavaFX is a bunch of components united in the common goal of a better user experience. Here's the breakdown:

JavaFX Script:

This is a new language designed from the ground up for animation and graphics. The 'script' part is actually a bit of a misnomer since it is statically typed and will soon be compiled straight to JVM bytecode. However, the script-like concept of quickly tying together components written in other languages (principally Java), is at the heart of JavaFX Script. To ease the confusion between JavaFX and JavaFX Script I will often refer to JavaFX Script as FX Script.

Oh, and just to clear up the licensing misinformation: JavaFX Script will be *completely open source* eventually but we are still working out the details. (these things, sadly take more lawyer time that I would like). The compiler is open source already and we are doing all development in the open to ensure it is built from the ground up to meet the needs of the community.

Designer tools:

We are working on a suite of tools for content creators & creative professionals. This will not be just a set of NetBeans plugins but instead tools written expressly for the designers. Think of something closer to Flash Designer than NetBeans. I can't tell you any more at this time, but stay tuned. It's going to be great.

Developer tools:

We are working on a suite of tools for developers as well. (duh!) You can see the beginnings of this in the JavaFX plugins for NetBeans 6.0, M10. We are also working on the complier (as described above) as well as support for debugging and other tools the modern developer demands. I should mention that collaboration between developers and designers is a key feature of the tools.

JavaFX Mobile:

This is the next generation of Java on mobile devices. It's an entire mobile stack written in Java (almost everything except the OS kernel itself). It is derived from JavaSE and features support for FX Script as well as Swing. This is a mobile stack for the next generation of devices. Think iPhone, not the typical 120x80 px phone of today. The goal here is really convergence between the desktop and mobile spaces with a single set of APIs you can use everywhere. BTW. JavaFX Mobile is all about mobile devices, but that doesn't have to mean a cellphone. There are plenty of other places where it could be used. I'm sure you can think of a few.

The Consumer JRE

In the short term this is really the most important thing for Java developers. It will have the most impact on you guys in the near future. The Consumer JRE is a whole bunch of improvements and new features for JavaSE to be shipped in updates to Java 6. That's right, we aren't waiting until Java 7 to kick ass! These new features will come in several releases over the next year starting in the spring.

The Consumer JRE addresses:

  • The deployment toolkit: Javascript and browser plugins to let you get your app out there ASAP. In most cases you will be able to embed a single line of Javascript in your webpage to install Java (if needed) and launch your app.
  • A new installer that is less scary, better looking, and more reliable (and has fewer buttons). Along with the deployment toolkit this will greatly improve the JRE installation experience, especially on Windows.
  • the Java Kernel: a modular form of the JRE that can incrementally download pieces as they are needed. This will let you get your app launched to first time JVM users even faster. Once fully installed it will be bit for bit identical to the standard JRE.
  • Quick Starter: a small service for Windows to improve JVM launch speed by keeping Java in the disk cache whenever possible. Note, this won't force Java into memory all the time; it's just in the cache. If Windows needs more memory the cache will still be paged out to disk.
  • Media: new support for video and sound, including a codec that is guaranteed to always be there.
  • Nimbus: a new cross platform look and feel that puts Metal to shame. Seriously. After this you'll want to ship Metal off to the glue factory.
  • New applet webbrowser plugin: a brand new plugin that is more reliable and faster to start up. This will greatly improve the applet launch experience. You will even be able to control the heap size and kill the JVM without taking down the browser.
  • -->

Kickass apps of the future

So that's Java FX. New stuff to build kick-ass apps of the future. Remember that our job as software developers is to create the best possible software for people who use our stuff; people who aren't software developers. If we do a better job then our users are happier and more productive. So really, kicking ass is a job requirement!

I hope my post today has explained things well. If you have any more questions or need an interview or more clarification of JavaFX then please contact me at joshua.marinacci@sun.com.

Bibliography

updates

I'm an idiot and accidentally turned off comments. They are turned back on now.