5 ms·
I used Play! for more than one and half a year and I must say I have mixed feelings about Play! now. Before 3 or 4 years ago, your chances with getting a web ap
by alpb 14y ago
I used Play! for more than one and half a year and I must say I have mixed feelings about Play! now. Before 3 or 4 years ago, your chances with getting a web application easily in JVM languages was using J2EE ecosystem or Spring framework. But now there are plenty of alternatives. When Play! came out, it has done really a good job, it was working just fine, it was magical and it totally nailed it. But then frameworks evolved around languages like Groovy and Clojure and they nailed it as well. Best move Play! made so far was supporting Scala, because all existing Scala web frameworks were crap (yes I'm talking about Lift).
I used Play in a startup backend and I won't be able to say I was satisfied with it. Play v2 is especially slower on your local development box, compilation takes some time and I actually still like Play 1.2.x family more. Its memory consumption was horrible on production (I made really a lot jvm adjustments and could not get it properly).
Personally, I now like Python frameworks (e.g Flask) and they are much easier, but I am not sure if you should rely your whole service infrastructure or enterprise software on a dynamically typed language stack. There are companies out there achieved this but I think Java or Scala will be just fine for LinkedIn, and by the way why the hack they don't allow comments on their engineering blog?
- taeric 14y agoCare to expand on why Lift is crap? (I still have paltry experience with it, but I also still feel it has the best template mechanism out there.)
- TylerE 14y agoI spent quite a bit of time evaluating Lift for some fairly significant (2 man-year+) projects. My final conclusion is that while it is technically brilliant, and many of the concepts make a lot of sense, it's just very hard come up to speed on and be productive in, especially if you aren't already a Scala wizard. Any Lift project is likely to have a fairly low "bus factor" if you don't already have multiple strong in-house Scala folks. I had some technical concerns as well - in particular the database connectivity stuff is a bit painful.
- taeric 14y agoHmm.. I'd never heard of the term bus factor. Amusing concept. How do you feel Lift compare with the likes of Play? I can say that the few small things I pushed out with Lift greatly benefited from the fact that the views were strictly html. To the point that nobody else involved even had to learn scala. Even though they did make some changes to the scala code. Being able to let folks edit that to their hearts content was ridiculously nice. That is, the fact that I did not have to (a) educate everyone on the templating mechanisms or (b) split apart templates received from someone else was huge. As for the database connectivity, I guess you didn't like the agnostic approach they took?
- TylerE 14y agoRe: Templating I can see how that's a factor for some, but since around here I'm also the guy who writes all the HTML it isn't really a factor one way or the other. Re: Databases Yea, ActiveRecord tends to spoil one. I don't like any of the Java ORMs nearly as much as AR, or SQLAlchemy for that matter. Re: Play I like Play a lot less than Lift. Lift I could see using for a personal project. Play I could not. It's just like Rails but crappyier and with all the java headaches and baggage.
- taeric 14y agoAwesome. Thanks for the responses!
- mercurial 14y ago> Yea, ActiveRecord tends to spoil one. I don't like any of the Java ORMs nearly as much as AR, or SQLAlchemy for that matter. That's a funny thing to say considering the huge difference in philosophy between Active Record and SQLAlchemy.
- papsosouid 14y agoThere's nothing unique about lift's template system though, you can get something like that in many languages, potentially while also using a good framework.
- taeric 14y agoI have not seen another templating system that compares. What other framework has it such that the templates are html. Not "html like" but actual html? Honestly, I think for me the big win with them is actually the inversion of how the template is done. Instead of writing some template that specifies how it is manipulated, you write a template and then directly manipulate it in the framework. (That make sense?) In essence, it seems that it is automating the typical first task on getting some html from a designer. This is great, because often the template can be redone and then all of the modifications the programmer was going to make to them is just part of the framework. As noted by TylerE above, I can see how this might not be a factor. I personally loved it.
- papsosouid 14y agohttp://en.wikipedia.org/wiki/Template_Attribute_Language http://en.wikipedia.org/wiki/Template_Attribute_Language is the most widespread example. We ended up switching to haskell and using heist, which is the same type of deal. The "view first" thing was certainly very irritating, but minor overall compared to other weaknesses in the framework.
- taeric 14y agoAny better examples? Neither of those appear to have the same strengths I was referring to. (Not to say they are crap. Just not the same.) Though, similar to TylerE, I'm curious to hear what you think are the other weaknesses? Similarly, how do you feel it compares with its peers? (A peer being a JVM targeted framework.)
- papsosouid 14y agoI don't know what you are referring to. What strengths? They are html templates. If you are going to restrict "peers" to jvm frameworks then I really can't offer you anything. I haven't used any other jvm frameworks, I tried the two scala options (lift and play) and ran screaming.
- lmm 14y agoAs someone who's just learning lift, it's woefully underdocumented. You can do some really cool stuff with it, but learning requires scrounging tutorials from random blogs, and it then turns out half of them are out of date. Templating wise the Wicket approach is the best I've ever used, and I wish that style was available in other languages. You don't put any logic or control in your templates; your object graph in code controls your page hierarchy, your components are genuinely reusable objects.
- taeric 14y agoYeah, I should have mentioned Wicket (it is credited as an influence for lift, after all). I can't remember what made that so difficult to work with. I think it was because you had to effectively mirror the template in code at parts, if I recall. As I noted somewhere else, the lift way of more directly manipulating the template is what I like. (That is, I don't have to have a ton of "liftId" attributes added to the template. In general, I just need the base class attribute added, and then I can manipulate the template using css selectors. This does mean some shape of the template has to be preserved, but I haven't found that limiting yet.)
- slurgfest 14y agoCan you provide any specific, actual, practical evidence that it is a bad thing to use a dynamically typed language to write a web app? Or is this just a personal prejudice?
- papsosouid 14y ago>Can you prove your opinion is objectively correct, or is it just your opinion? Doesn't that question seem rather non-productive? At least if you asked why he has that opinion you could engage in some sort of potentially constructive conversation on the topic.
- SourPatch 14y agoYou should look at Scalatra before dismissing scala web frameworks. It is very simple and easy to use.
- johnx123-up 14y agoLike I asked in other thread, do you have any opinions about Scooter http://www.scooterframework.com/ http://www.scooterframework.com/ and ActiveWeb https://code.google.com/p/activeweb/ https://code.google.com/p/activeweb/ ? These looks more RoRish and productive than Play!. Also, some users of Play! 1.x looking to fork the framework for better support (I think) https://groups.google.com/forum/#!forum/playone https://groups.google.com/forum/#!forum/playone