I'd recommend Play! over Lift if:
* You just want a data entry / CRUD style app
* You prefer MVC architecture
- Play! will feel pretty familiar if you've used Rails
* You don't know Scala
I'd recommend Lift over Play! if: * You already know Scala
* You want to build more "reactive" apps
- Lift has excellent AJAX / Comet support built in
* You enjoy trying new ways of doing things
- Lift has many unique features, there aren't many similar frameworks
They're both fast, have excellent communities, decent documentation (I think Play's documentation is better today, but Lift's has been improving fairly rapidly). You can't go wrong with either one.I should add - you can do AJAX & Comet in Play!. You can do MVC in Lift! One framework is just more adept than the other by default in their respective arenas.
Lift:
* stateful
* no code in the view
* there is more than one way to use Lift
Play!:
* stateless
* code in view: similar to erb files in rails
pros and cons about code in the view: http://scalate.fusesource.org/code-in-view.html
My experience: Well lets say on my next project I'll give "code in view" a try :)
I tried to build something with it about 6 months ago. Every piece of sample code I found used a different combination of classes/frameworks, and it was in the middle of an ORM switch from Mapper to Record (or something). It was a disaster, and I gave it up after a couple days of frustration.
Play! is stateless.
Both have great communities - Lift has a slight edge in mindshare because of Foursquare.