Now Sun has 3 technologies which I believe overlap somewhere.
As far as I understand, Swing is for pure desktop based application which can access remote database but it is a pure thick client technology.
JSF is a rapid application development technology which gives swing like feature and event life cycle for the web applications.
And we have JavaFX which is also I think a technology like Flex which gives you swing like behavior in a web application
Apart from that we already have plethora of Ajax based technology which gives RIA features.
What kind of applications do you think are best to be developed in JavaFX instead of Swing or JSF or Adobe Flex for that matter?
Please correct me if I am wrong somewhere.
Sun has said that JavaFX is not meant to replace Swing. That said, there are many applications that you could implement in either technology. In general, the JavaFX implementation will be quicker and take less code, since JavaFX does much of the Swing-required plumbing for you. So, when would you use Swing? When JavaFX?
JavaFX has some Swing-based controls. You can also create wrappers to use any of the Swing controls that JavaFX has not yet implemented. (See this excellent article: Mixing JavaFX and Swing.)
JavaFX excells at 2D graphics, animation, and effects. If you were instead using Swing, you'd have to use the Java 2D API to implement that. You don't want to go there.
JavaFX has its own "native" UI controls that will work in the "common" environment. This includes tv and mobile as well as desktop. JavaFX Swing controls will only work in the desktop environment.
What does JavaFX offer above Adobe Flex or Ajax?
JavaFX has full access to the Java API and it lets you build well-engineered MVC applications.