A friend recently asked for about my Scala toolset. When my response quickly spiraled out of control I decided to turn it into a quick blog post so everyone could benefit from the reply. So without further ado here is the current set of tools, libraries, and frameworks that I use on a semi-regular basis.
- Akka: A very slick Actor framework.
- Scalatra: A Scala port of sinatra
- Scalatest: Nice testing framework, specs is the other main player
- IntelliJ: Very nice IDE for Scala, I prefer it to Eclipse
- SBT: Its a bit of a pain to work with but its the default build tool for Scala. If you are just trying to do basic dependency management its pretty nice. Extending it is where the pain comes in.
- sbt-idea plugin: will generate intellij projects from sbt
- xsbt-web-plugin: will create wars for your project
- junit_xml_listener: outputs scalatest results as junit xml so Jenkins can process it
- NOTE: SBT runs everything in parallel as much as it can, this can screw with junit tests but you can turn it off by setting parallelExecution := false
- JodaTime: Replaces the standard Java date stuff which is quite weak. The next version of Java will actually have JodaTime built in
- c3p0: A solid JDBC connection pool. I’ve also heard some talk about BoneCP which the Play framework uses.
- Apache Commons: look here for things like, string utils, io utils, db utils, utils around codecs, really anything that seems like it should already exist.
- SLF4J: The only logging framework worth using anymore
- Whirlycache: A simple in memory cache though I keep hearing Google MapMaker is very nice.
- Jackson: The only JSON library you should use, stupid fast
- scalaj-time: wrapper for joda time, lets you do things like 4.minutes.ago
- scalaj-collection: wrapper for collections that allows you to easily convert between scala and java collections. However, this was essentially moved into the standard library in Scala 2.9 so you might just want to use that now
- Jerkson: scala wrapper for Jackson though this is abandoned now. Jackson has a Scala module now and Json4s is trying to unify all the Scala JSON wrappers and supports Jackson.
- slf4s: A Scala wrapper for slf4j
- scalaj-http: A simple wrapper for the built in Java HTTP library, not super performant but works in a pinch
- dispatch: A Scala wrapper around Apache HTTP Async, better for high performance HTTP but a bit more complicated to use as you should use a completion handler to process the response