5 ms·
I would definitely go with Play. It is by far the best Java framework around for getting something done quickly and skips the design pattern/XML heavy approache
by taligent 14y ago
I would definitely go with Play. It is by far the best Java framework around for getting something done quickly and skips the design pattern/XML heavy approaches used in most of the other frameworks. And coming from a Rail background its convention over configuration approach is going to be more akin to what you are used to.
The real issue is how heavy your I/O is going to be. Play2 is very new but is designed for your use case as it incorporates Akka. Play1 however is easier to use and more well understood. For me I would start with Play2/Java and then selectively incorporate Scala where you need to. That's just because I find Java dead easy to code, maintain and hire developers for.
Twitter has some great open source libraries/resources for Scala at http://twitter.github.com http://twitter.github.com that can help.
Also if you have full control of your stack do look at Nginx/Lua. It is lightening fast. http://news.ycombinator.com/item?id=2390816 http://news.ycombinator.com/item?id=2390816
- noelwelsh 14y agoI agree with the recommendation for Play 2. It is simple framework that covers a lot of bases adequately. If you want to do the HTML/database thing Play will cover this. If you want to do the REST service thing, Play will also handle that. If you just want to do REST services we've had a lot of success with BlueEyes (https://github.com/jdegoes/blueeyes https://github.com/jdegoes/blueeyes) and the framework we've built on top of this, Bigtop (https://github.com/bigtop/bigtop https://github.com/bigtop/bigtop). Documentation is lacking compared to Play. It's an option is you're feeling braver, want to do pure REST services, and want more performance than Play gives you. I think only crazy people use Java. It's just not productive enough. I use Scala. The shape of the learning curve will depend on your experience with modern languages. If you've done Ruby/JS and are happy with blocks/closures and stuff like underscore.js you're halfway there. If you've ever done any Haskell/O'Caml/ML you're 90% of the way there. Getting started on the JVM can be daunting. In the Scala world we use SBT (https://github.com/harrah/xsbt/wiki https://github.com/harrah/xsbt/wiki) which gets around a lot of Java/Maven nonsense, though adds some of its own. Other languages will have their own build tools. I've had a tiny peek at VertX, and don't like it. It seems to encourage callback spaghetti and doesn't seem to make good use of the type system. If you go any of the Scala options above feel free to drop me an email (in my profile) if you need help.
- brutuscat 14y agoIf Play is truly code oriented I will definitely check it out. I hate those java projects where almost everything is xml, is unreadable and most of the times the examples don't even work... Thanks!
- nuriaion 14y agoIf both Java and Scala is new to you i would suggest to start with Scala and learn to read Java by the way. I came from a background of a lot of Embedded C and some Ruby. For me Java had more a feeling like C. Very clumsy and needs a big amount of code to describe something.
- bartonfink 14y agoI've used Play 2 for freelance work and I use Play 1.4 for my day job, and I vastly prefer Play 1.4. Play 2 is heavily biased towards Scala and static compilation (even to the point of requiring "HTML" templates to be compiled), and I don't see a substantial benefit to the Play 2 claim that everything - code, configuration, templates - is typesafe. I'm perfectly willing to accept the possibility that I just don't get it, but I think Play 1.4 provides a far better development experience. Further, there's no sign that the developers are going to abandon the "old" Java-centric Play architecture anytime soon, so you won't be starting out on something with a shelf-life measured in weeks if you went that route.