Hm, I am really coming off as a downer this week but I have used Flex. And with Flex, you can use the important part of Java when it comes to RIA's and that is all the server side technology plus whatever you need to do there, with Java. Just use BlazeDS or Life Cycle Data Services. In fact, Flex uses Java to compile the action script and MXML files into flash binaries. Flex gives you declarative UI building via XML with a powerful scripting language in ActionScript. You can also create everything in ActionScript and not use XML at all because the XML is just converted to ActionScript during compile anyway.
JavaFX uses a declarative syntax for building the UI which allows scripting elements or code, if you will, to be used directly within the JavaFX langauge. You're still going to access your data over some sort of data service, more than likely and that could be using JavaFX's built in RESTful web service features or something else. You could create a Flex app and a JavaFX app and have them both talk to the same back end services.
The real question is which technology is better for delivering the UI to the end user.