Wednesday, May 9, 2007

The large number of discussion about JavaFX over the last few days seems be very polarized. So far I have only read two opinions repeated over and over:
  1. JavaFX is the competitor to Flash and SilverLight that we've all been waiting for.
  2. JavaFX is a weak attempt to cash in on the recent SilverLight announcements and has no chance for success.
What most people don't seem to get, is that JavaFX isn't even in the same market as Flash and SilverLight. It's much more appropriate to compare JavaFX with XAML or Flex (just the markup language, not the action script, runtime environment, multimedia support or animation). Both Adobe's product line and Microsofts are made up of several packages:
  • A runtime environment - The Flash VM and the .Net Runtime
  • A declarative UI language including widgets - Flex and a light version of XAML
  • A declarative animation language - Flash and XAML
  • A scripting language for procedural logic - Action Script and JavaScript
  • A development environment for each of these three languages
  • Multimedia components - video and audio playback is supported well as first class components in both frameworks
Of course JavaFX runs on the Java runtime environment, and it defines a very nice language for declarative UI building and a decent language for animation... but that's all it tries to do. Sun has yet to show any interest in completing the rest of the picture.
  • It could be argued that some work would need to be done to the JRE before it could be light enough to compete with Flash or Silverlight as a runtime environment (at least ease of installation could use some work).
  • JavaFX has no equivalent to JavaScript. Although one could theoretically use Java, Groovy, Javascript or some other language for procedural code, the binding isn't nearly as nice as the integration the other two frameworks have with their scripting languages.
  • Netbeans provides some syntax highlighting and code completion for the language, but it's barely better than notepad when compared to the authoring tools being offered by Adobe. To take on the competition, Netbeans will need timeline driven animation and Matise-like component layout from day one. On day two, we need vector drawing tools to compete with Illustrator and Expression (tie-in with existing tools might be a nice stop gap).
  • Multimedia support has always been a weakness in Java. JavaFX is the neon sign pointing out one of Sun's often ignored weakesses.
With all that said, JavaFX compares very nicely to Flex and XAML when ignoring their sister technologies. Feature for feature it compares nicely. Without the rest of the package, of course, it's all pretty academic. Assuming Sun is really serious about taking on Adobe and Microsoft, they still have a lot of work ahead of them.