I'm doing some research to define the technology stack I'll be using in my next project.
I have a Java background, but I'm interested in expanding my horizons and use the best tools available.
I've played with Groovy and Python, and they are nice, but I've also read about performance of these languages and there is ample margin for improvement.
Now I'm learning Scala, which I read is very fast regarding performance (comparable to Java), is very powerful due to its syntax and functional programming/object hybrid nature, and
is much more expressive than Java (scala code tends to be 1/3 than Java code).
But I need to decide other important tools.
For templating I'm fascinated by Haml and Sass used in the Ruby world, so I'd like to try Scalate with Scaml templates.
For ORM, I've found SQueryl which looks very promising, but I've also found others such as Scala-query, Querulous or Circumflex-ORM.
For build engine I'm looking at Gradle. I've read about SBT (Simple build tool for Scala) but Gradle looks more powerful.
For web framework I'm looking at the Java framework Play, which is Scala friendly, and brzy (which seems promising but according to the autor "As of right now, brzy is not ready for production use.").
Also Circumflex Web Framework and Scalatra, inspired by Ruby-esque Sinatra, and many others listed in this thread
http://stackoverflow.com/questions/1488412/what-scala-web-frameworks-are-available.
I'm looking for a lightweight web framework easy to configure and setup, without XML configurations, fast and scalable. When I was playing with Groovy I was interested in Grails, for example.
So, a possible choice would be Play (or Scalatra) framework, with Scalate Scaml templates, Squeryl and Gradle. Any suggestions or comments on frameworks/tools for scala?
I'm not into ORMs, but use the Lift ORM to get started before writing JSON to NoSQL storages.
IDE: Intellij with the Scala plugin.
I will possibly use Mustache templating via Scalate in Lift instead of the Lift version, as Mustache templates can be reused in the web frontend in Javascript.
SBT with ~test-quick and Specs is fantastic for TDD.
I've played with Play alot, it's nice but the default Groovy templating is slow as hell and I'm not sure their usage of exceptions for work flow does scale - from my operations experience I think it won't (perhaps this changed in the last 5 months).