I have experience with Spring Web flow but never worked with JSF and i am going to learn that. I thought it is UI technology
but it also have capabilities similar to SWF.
I want to know -
What are the differences and what are their usage. In what kind of envrionemnt we should opt one over another?
I remember, in a project our manager wanted to replace JSPs with JSFs/Facelets.
JSF is one of the purest implementations of the Model/View/Controller (MVC) paradigm that exists for J2EE and it is an integral part of the JEE specification (unlike Struts, Spring web, Wicket and so forth).
There is no one-size-fits-all solution, but JSF is a good fit for applications where a lot of web forms are required to be processed and intensive data validation is required. JSF takes an all-or-nothing approach to data validation: if any submitted data is invalid, it is all rejected and suitable error messages are returned to the user.
Other useful amenities of JSF are Facelets (which I have found to be a lot easier to work with than Struts Tiles) and the fact that in virtually all cases, you don't have to provide Controller code, only View templates and Model objects. The Controllers are already built into JSF, debugged and ready to use.
An IDE is no substitute for an Intelligent Developer.