Hacker News new | ask | show | jobs
by RyanZAG 4930 days ago
The choices really come down to (imo anyway),

1. JSP

2. GWT/GAE/AppScale

3. Play

JSP is just awful - taking PHP and trying to fit it into Java somehow. It's just terrible and needs to be phased out ASAP. (EDIT: Probably too harsh.. JSP works in the same way PHP works: it powers most of the web, and it does a grudgingly good job. The ease of plopping in some dynamic content into am html website made by a designer should not be discounted lightly for small websites. Probably best to just use PHP and not JSP in this use case though...)

GWT/GAE/AppScale mix is my preference. You can share code across server and client. Building RESTful services is a dream with Jersey on the server/thick client, and RestyGWT in the browser. The GWT compiler produces some very well performing javascript (only a bit slower than highly optimized libraries, but feels faster than nearly all webapp javascript). GWT also has incredibly good tooling support in automatic sprite sheet creation, compiled CSS styles, uibinder for declarative layouts, etc. The downsides are (1) java language, so no functional programming and (2) compile time can get nasty when you head in the millions-lines-of-code arena. GWT team is seemingly working on speeding up the dev cycle with SuperDevMode and that.

Play framework is most similar to the ruby on rails approach and works incredibly well for your standard webapp. The support for Comet and WebSockets are particularly nice and making very dynamic 'push' webapps is the real strongest point. The tooling can get pretty annoying at times with features/bugs, but it is steadily improving. The biggest downside to Play is that it is in a 'hipster phase' currently with the release of Play 2. This means both a huge surge in interest, but that same surge can be a curse when it drops out of 'hipster' mode in the future and loses devs. Numerous promising frameworks/languages have hit this problem and never really recover when the 'fashion' changes.

GWT, for example, has long since fallen out of fashion but continues to be heavily developed because of the huge and profitable existing user base inside Google (Adwords, etc), guaranteeing it active development for awhile to come.

3 comments

I'd argue that Play will circumvent this "hipster phase" issue for (at least) these three reasons:

(1) The ubiquity of the Java/JVM ecosystem paired with the interest in a alternative to Java will keep the functional JVM Langauges like Scala/Clojure in high demand.

(2) The Typesafe machine pushing Play (see http://blog.typesafe.com/typesafe-announces-14m-series-b-fin...).

(3) Scala is your best bet for a Statically Typed Functional JVM language. Also, we use Play 2.0 at the startup I develop for.

I also find that Play is pretty cool to work with. Gone are the days of having to use servlet containers for development.

There is also Lift, one of the early scala web frameworks, but after using it for over a year, I'd say stay away.
What drove you away from Lift?
What about JBoss Seam (or Weld under J2EE6)?
I use Weld for a side project, had hard time getting it to work with JRebel, and the redeployment is a headache, also hotswap didn't work for proxied classes (Injection / CDI). The JEE 6 stack, somewhat affected by Gavin King (author of Seam and Hibernate) is not that bad, it's just not that cool anymore, same way that Spring MVC is less cool (just because there are arguably easier and more rapid frameworks such as Play) and by saying less cool I mean less fun and less fun means to me less productive.