The Source for Java Technology Collaboration
User: Password:



Joshua Marinacci

Joshua Marinacci's Blog

JavaFX != JavaFX Script

Posted by joshy on September 10, 2007 at 07:37 AM | Comments (14)

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.

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.


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • Great post. Java developers and consumers have allot to look forward to.

    Thanx, PLA


    Posted by: htplainf on September 11, 2007 at 12:54 PM

  • Hi Joshua! Really good points!
    I've linked this entry in my post.
    Thanks,
    Bruno

    Posted by: brunogh on September 11, 2007 at 07:29 PM

  • Like to think I was the first to think JavaFX before plotting a page & rustling up a logo. (It may have been in the same night, actually.) We hope you will ask deepthoughtdesign.com for help with your logo.

    Posted by: tefflox on September 11, 2007 at 11:25 PM

  • My biggest problem with JavaFX is that I don't see any of the new capabilities being made available to us Swing developers. Seems like you're leaving those of us who've loyally slogged it out with Swing's idiosyncrasies all these years behind. Yes I know I could piece it all together from timing framework, SwingX, etc... but why can't we have some nice polished libraries.

    Posted by: ashayk on September 12, 2007 at 08:01 PM

  • Most of the features that are part of JavaFX will be available within straight Swing apps. All features of the Consumer JRE are language agnostic. JavaFX Mobile is starting out as a CDC implementation, which includes Swing. The media support will work from any language as well. That's what I'm trying to explain, it's not just about the script.

    Posted by: joshy on September 13, 2007 at 08:45 AM

  • Hi,
    Are there any more details of the new Media components for the consummer JRE you can tel me about?

    Posted by: chhum on September 14, 2007 at 06:22 AM

  • I don't have any more details on the media APIs right now, but I'll let you know as soon as I have something to share. Be sure to bookmark my blog. :)

    Posted by: joshy on September 14, 2007 at 08:15 AM

  • Good points, but IMHO this misses the point of the issues many of us are raising.

    Yes the (scripting) language is separable from the other components, but the better that language is, the better the entire package will be. If that language is off target, then the entire ecosystem suffers.

    Out of the five components listed, only the Consumer JRE is not dependent on the new language. JavaFX Mobile seems to hedge it's bet by allowing either Swing or FX Script. But for sake of argument let's say that none of the other components depended on the language. I'd still argue that choices in the language will make or break adoption and success.

    There is a limited opportunity to create an easier language to build user interfaces. Once the language is released, it's difficult to change course.

    Is there a process by which fundamental input on the language will be incorporated ... or is it too late?

    Posted by: ericraymond on September 15, 2007 at 01:28 PM

  • The language is still being developed and you can absolutely have some input. Join the mailing list. There's a thread right now called: OpenJFX: Request for Feedback.

    Posted by: joshy on September 15, 2007 at 04:14 PM

  • Hopefully I'm not too off topic, but is there a connection to JSF? Do they exist in parallel (for creating web applications) or is JavaFX a kind of successor? Thanks!

    Posted by: yebo on September 18, 2007 at 02:18 AM

  • There is no direct connection between JavaFX Script and JSF. JSF is a framework for building serverside web applications. JavaFX and JavaFX script are tools and technology for building client side applications. However, you can certainly combine the two using webservices like REST and SOAP.

    Posted by: joshy on September 18, 2007 at 08:56 AM

  • Hi,
    Are there any plans to run JavaFX Script Apps in a Browser? I think there is a trend to run all client applications in browsers. This would also be a nice feature for JavaFX Script Apps.

    Posted by: frankbe on October 02, 2007 at 04:36 AM

  • frankbe Java FX Script is build on the standard JRE so can run as applets as well as webstart apps. There are some bugs that impact performance which we are working on.

    Posted by: joshy on October 03, 2007 at 08:00 PM

  • great explanation !!!!

    thanks !!!!

    Posted by: metalklesk on November 11, 2007 at 06:58 PM



Only logged in users may post comments. Login Here.


Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds