Potential of AI (Generative AI) in Business: Learnings and Insights
Java to scala
1. (partly)
How we moved from
^
Java to Scala
Graham Tackley
guardian.co.uk
Thursday, 7 October 2010
2. History
• Java shop since 2006
• guardian.co.uk: java + spring + velocity +
hibernate + oracle
• ~100k lines production java code (and
~35k xml...)
Thursday, 7 October 2010
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 April 2010:
http://content.guardianapis.com
Thursday, 7 October 2010
4. December 2009
• Started new Content API implementation
• java + guice + guice servlets + apache solr
Thursday, 7 October 2010
5. December 2009
• A few people had played with scala
• No production scala code
Thursday, 7 October 2010
6. 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
Thursday, 7 October 2010
10. 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
Thursday, 7 October 2010
11. February 2010
Still some very java-like code...
Thursday, 7 October 2010
12. February 2010
... immediate win with non-IDE generated constructors ...
Thursday, 7 October 2010
13. February 2010
... and some things much more readable than Java
Thursday, 7 October 2010
14. July 2010
• Switched from maven to simple-build-tool
• Mainly for incremental compilation
• ~ test-quick and ~ prepare-webapp also
invaluable
Thursday, 7 October 2010
15. Feb-Oct 2010
• Much learning within the team as to how to
write concise, readable Scala code
Thursday, 7 October 2010
16. Option
or How we learned to stop worrying and love the Option
We’d read “don’t use nulls, use Option instead”
DAY ONE
s/x == null/x.isDefined
DAY THREE
x match {
case None => ...
case Some(value) => ...
}
Thursday, 7 October 2010
17. Option
or How we learned to stop worrying and love the Option
WEEK THREE
TODAY
We now think of Options as lists with zero or one entries
Thursday, 7 October 2010
18. map & flatMap
it took us a while to realise that most of the loops we
wrote in Java were actually “map” or “flatMap”
Thursday, 7 October 2010
19. Java Libraries
Content API extensively uses Solr/J,
which is good but returns loads of nulls
And don’t get me started on HttpServletRequest...
We used implicit conversions to hide the Java yuk
Thursday, 7 October 2010
21. 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
Thursday, 7 October 2010