2. History
• Java shop since 2006
• guardian.co.uk: java + spring + velocity +
hibernate + oracle
• ~100k lines production java code (and
~35k xml...)
3. Content API
• Provide API to access all of our website
content
• Limited beta released early 2009
• Started implementation of final version late
2009
• Live May 2010:
http://content.guardianapis.com
5. November 2009
• Started new Content API implementation
• java + guice + guice servlets + apache solr
6. November 2009
• A few people had played with scala
• No production scala code
7. January 2010
• Comprehensive integration tests were very
important to us
• Started writing our integration tests in
Scala with the awesome ScalaTest
• Already a maven project, so mixed scala-
java support easy with maven-scala-plugin
demo: mavan-scala-plugin, ScalaTest
11. February 2010
• ... despite that we loved it so much that
after a month we decided to convert the
whole app to Scala
• scala + guice + guice servlets + apache solr
12. Our top 5 things we
loved about scala
on day one
15. 2. Type inference / val & var
ArrayList<String> myList = new ArrayList<String>();
=>
val myList = new ArrayList[String]
16. 3. No source file naming
constraints
• Don’t need to be named after package &
class name like java
• So multiple classes are allowed in a single file
e.g. ResponseRenderer.scala
17. 4. REPL (console)
• run “scala” for a scala shell
• awesome for experimentation
18. 5. Same tools, libs, deployment &
runtime characteristics as Java
• We still use IntelliJ (with the scala plugin)
• A scala war file is just a war file
• All the experience of running jvm in
production still applies
• Can still use java libraries
e.g. GuiceServletConfig.scala, XmlFormatter.scala
19. Our top 5 things we
loved about scala
on day one
SUMMARY:
Scala is great even if you only use it as a more concise java
(java-without-semicolons™);
for us this was a great way to start.
20. July 2010
• Switched from maven to simple-build-tool
• Mainly for incremental compilation
• ~ test-quick and ~ prepare-webapp also
invaluable
22. some early code...
it took us a while to realise that most of the loops we
wrote in Java were actually “map” or “flatMap”
23. ... ended up as
it took us a while to realise that most of the loops we
wrote in Java were actually “map” or “flatMap”
24. Summary
• Migration path from Java relatively smooth
• Take it easy, and don’t fear java-without-
semicolons in the early days
• An incremental embrace of Scala features
worked really well for us
• Hide the Java yuk with implicit conversions