Many thanks to all who came to my Spring in Scala talk. The video is now available at Skills Matters website, I am adding the slides in PDF the source code on Github and links to the other posts that explain in more detail the topics I mentioned in the talk.
What is Scala?
Scala is object-functional, strongly typed language. This means you can easily adopt it: from the familiar patterns of object-oriented programming, through applying the functional programming principles and completing the journey by implementing complex type systems.
There are many more details at What can Scala do for you?
The Cake Pattern
When you’re in the Scala world, you will no doubt come across the Cake pattern. (The name has nothing to do with Cake Solutions, we started the company many years before Scala was born.) The Cake pattern is a kind of dependency system, but not a dependency injection of instances as implemented by the Spring Framework. Instead, it allows us to express functional dependencies and these dependencies must be satisfied at compile time by the programmers; the Scala compiler does not perform dependency injection of any kind.
For more detailed discussion, take a look at Cake Pattern, Cake Pattern in depth and Spring Framework and the Cake Pattern.
Down the rabbit hole
So. Once you are comfortable with Scala’s functional and type programming patterns, it is time to start looking at some of the some of the more complex patterns of functional and strongly typed programming. A perfect starting place is the Scalaz library, which implements constructs from the purely functional programming and category theoretic worlds. After Scalaz, it will be time to take a look at Shapeless, which implements poly-type programming.
I will get you started by looking at using Scala’s IO monads in a Spring application and using Kleisli arrows as generalised units of computation in Kleisli arrows I and Kleisli arrows II.
The controversy
To close, I think you need to be aware of the FUD that many spread about Scala. The gist of it is that Scala–the language, that is–is simply far too complicated for anyone to understand well. This makes Scala unsuitable for any serious use, because any code that you write in Scala is doomed to be far too difficult for anyone to understand.
I have added my bit to the fray with my well-intentioned Christmas tree post; I then attempted to finally get rid of the festive application in subsequent post Christmas tree that won’t go away.
Summary
We have been using Scala code in production for a long time; we have seen massive improvements in the tooling (both Scala IDE and the IntelliJ IDEA Scala plugin). The Scala compiler has also reached maturity; exceptions at compile-time are now [mostly] a thing of the past. So, don’t be afraid, jump in!

Pingback: This week in #Scala (10/02/2012) | Cake Solutions Team Blog