What are the advantages and disadvantages of frameworks Lift, Play and Wicket? What characteristics are best or only supported by each?
Thanks
Play:
Lightweight Java-based framework, with Scala support available as an extra.
very good for rapid prototyping, fast-feedback-loop kind of work. Embeds the compiler, so you just edit source code in place and pages get immediately updated. Learning curve is shallow.
Wicket:
Stateful Java-based framework, with Scala support available as an extra.
Shallower learning curve into Scala, especially if you already have wicket experience. Good separation of concerns, POJO-based model. Arguably one of the best Java web frameworks currently available.
Lift:
Stateful native-Scala framework. Deep Scala integration, so no need to generate bean setter/getter methods or worry about interop between Java/Scala collections. Fully embraces functional-programming concepts, such as immutability and closures.
Also the steepest learning-curve of the three. One common piece of advice is therefore to learn the Scala language before getting started with Lift, especially if you come from a Java background.
Others:
There are also other Scala-based frameworks available (such as Scalatra and Pinky) for web development, though not as well-known as Lift. It wouldn't hurt to check these out as well!
For more information, see this question: What Scala web-frameworks are available?