Last month, at JavaOne, Sun introduced JavaFX to the world. Those following more closely had already seen this language under it's previous name: F3 - Form Follows Function.
I see a lot of blogs that put JavaFX in the same category as Adobe's Flex and Microsoft's Silverlight - even Jeff Atwood does so at his much appreciated Coding Horror blog. I must admit that I haven't looked at Silverlight enough to know whether that comparison is valid, but to me JavaFX is certainly different to Flex.
Flex is a tool for building applications that run in the Flash player in your browser, so called Rich Internet Applications. And although it is apparently a great language and tool to use, it hasn't gained widespread adoption. The reason for that is probably very simple: there are less obtrusive ways to reach the same goal. Ajax is the buzzword for these applications now and they're often much more intuitive to their users. But enough has been said about that on other blogs.
JavaFX is a programming language that was created to declaratively build Swing applications. If you've never programmed Java GUI applications before: Swing is a client-side library/framework for building GUI applications, much like Microsoft's old MFC framework, their more recent WinForms or Borland's VCL.
Note that the resulting application of any of these frameworks doesn't run in your browser, it runs on your machine as a stand-alone application. And that to me is the main difference between Flex and JavaFX. The former is a tool for building rich internet applications, the latter is a tool for building fat client applications.