When I did a bit of Play 1.2 dev, I ran into two serious annoyances.<p>First, static actions make for untestable code. The only way to test this in 1.2 was to do full integration tests. You can't unit test controllers/actions, which to me is a horrible "opinion" to have. Looking at the docs, 2.0 [appears] to make an attempt via the callAction helper [1], but you still can't inject dependencies via a constructor and call instance methods. Static members in static languages make testing a real pain.<p>Second, JSON felt like a 2nd-class citizen. Dealing with JSON in either the request or the response felt barbaric. I don't see that they've improved things. Auto binding from a JSON request to an object should exist without having to write a bunch of custom JSON serializers...doubly so for outputting json.<p>[1] <a href="http://www.playframework.org/documentation/2.0/JavaFunctionalTest" rel="nofollow">http://www.playframework.org/documentation/2.0/JavaFunctiona...</a>
I am really excited about this but also a bit worried that Java will become a second class citizen for Play development.<p>The typesafe deal, use of SBT and other scala tools, and the overhead of maintaining docs and bindings for 2 languages all seems to point to an inevitable deprecation of Java at some point.<p>Hopefully not?
Sorry for being "rantish", but most of the "negative" comments I'm reading around here are from people who didn't spend a single second reading the manual.<p>Yes, I'm not partial, I'm invested on Play, but I am because it has a wonderful documentation that makes life really easy (that plus StackOverflow).<p>Most of the complains in here come from people with almost no experience in it. No, a small side project of 6 hours is not "experience". You just toyed around. You can't know about the real issues or benefits related to a framework.<p>Please, I know this is "the internet", but in a site like Hacker News, couldn't you try to talk only about things you know?
It's also now part of the Typesafe stack - here's the release announcement from the typesafe blog: <a href="http://blog.typesafe.com/introducing-play-20" rel="nofollow">http://blog.typesafe.com/introducing-play-20</a>
For anyone interested in its claim of being reactive, as I was, the Play framework does not appear to support reactive programming [1].<p>From their samples and documentation, it looks like an event-driven server without any reactive aspects. I'm fairly sure they're mistakenly calling typical event-driven programming "reactive". This is backed up by the statements of Typesafe's CEO on the subject in an interview [2].<p>[1] <a href="http://en.wikipedia.org/wiki/Reactive_programming" rel="nofollow">http://en.wikipedia.org/wiki/Reactive_programming</a>
[2] <a href="http://www.infoq.com/news/2011/12/playframework-typesafestack" rel="nofollow">http://www.infoq.com/news/2011/12/playframework-typesafestac...</a>
I find that testing has improved quite a bit since actions now return a Result object that you can inspect in your tests. It is true that you cannot inject a mock data repository, for example, but Controllers are meant to be simple HTTP response generators and you might want to make them call some domain object to perform anything complicated. You can then unit test you domain object to your heart’s content.
personal wish: this, with CRUD scaffolding and GAE support, will make Play my dream framework.<p>edit: this news announcement from Typesafe explains a bit more about Play 2.0: <a href="http://blog.typesafe.com/introducing-play-20" rel="nofollow">http://blog.typesafe.com/introducing-play-20</a>
Their beta was incredibly buggy, riddled with compilation performance performance, slow load times, was really not a fun experience. I've heard they finally got development load times in check. I hope they get their deployment process a bit better then creating a zip file and having to run nohup on their start script.
Off topic a bit, but it's a good place to complain:<p>Typesafe,<p>Please don't be a tool. Take your "whitepapers" out from behind an email registration page.