(partly)

How we moved from
         ^

   Java to Scala
     Graham Tackley
     guardian.co.uk
History

• Java shop since 2006
• guardian.co.uk: java + spring + velocity +
  hibernate + oracle
• ~100k lines production...
Content API
• Provide API to access all of our website
  content
• Limited beta released early 2009
• Started implementati...
December 2009


• Started new Content API implementation
• java + guice + guice servlets + apache solr
December 2009


• A few people had played with scala
• No production scala code
January 2010
• Comprehensive integration tests were very
  important to us
• Started writing our integration tests in
  Sc...
January 2010
January 2010


• A fair bit of our test code was java-
  without-semicolons as we learnt about
  Scala...
January 2010
February 2010

• ... despite that we loved it so much that
  after a month we decided to convert the
  whole app to Scala
...
February 2010




Still some very java-like code...
February 2010




... immediate win with non-IDE generated constructors ...
February 2010




... and some things much more readable than Java
July 2010

• Switched from maven to simple-build-tool
• Mainly for incremental compilation
• ~ test-quick and ~ prepare-we...
Feb-Oct 2010


• Much learning within the team as to how to
  write concise, readable Scala code
Option
or How we learned to stop worrying and love the Option

 We’d read “don’t use nulls, use Option instead”

         ...
Option
    or How we learned to stop worrying and love the Option

                       WEEK THREE




                 ...
map & flatMap




it took us a while to realise that most of the loops we
     wrote in Java were actually “map” or “flatMap”
Java Libraries
      Content API extensively uses Solr/J,
     which is good but returns loads of nulls


And don’t get me...
Summary
• Migration path from Java relatively smooth
• Take it easy, and don’t fear java-without-
  semicolons in the earl...
• http://content.guardianapis.com
• http://www.guardian.co.uk/open-platform
• http://github.com/guardian/open-platform-
  ...
Java to scala
Upcoming SlideShare
Loading in...5
×

Java to scala

5,155

Published on

How we (partly) moved from Java to Scala. Talk at Scala Lift Off 7 Oct 2010

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,155
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
87
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide






















  • Java to scala

    1. 1. (partly) How we moved from ^ Java to Scala Graham Tackley guardian.co.uk
    2. 2. History • Java shop since 2006 • guardian.co.uk: java + spring + velocity + hibernate + oracle • ~100k lines production java code (and ~35k xml...)
    3. 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
    4. 4. December 2009 • Started new Content API implementation • java + guice + guice servlets + apache solr
    5. 5. December 2009 • A few people had played with scala • No production scala code
    6. 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
    7. 7. January 2010
    8. 8. January 2010 • A fair bit of our test code was java- without-semicolons as we learnt about Scala...
    9. 9. January 2010
    10. 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
    11. 11. February 2010 Still some very java-like code...
    12. 12. February 2010 ... immediate win with non-IDE generated constructors ...
    13. 13. February 2010 ... and some things much more readable than Java
    14. 14. July 2010 • Switched from maven to simple-build-tool • Mainly for incremental compilation • ~ test-quick and ~ prepare-webapp also invaluable
    15. 15. Feb-Oct 2010 • Much learning within the team as to how to write concise, readable Scala code
    16. 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) => ... }
    17. 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
    18. 18. map & flatMap it took us a while to realise that most of the loops we wrote in Java were actually “map” or “flatMap”
    19. 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
    20. 20. 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
    21. 21. • http://content.guardianapis.com • http://www.guardian.co.uk/open-platform • http://github.com/guardian/open-platform- content-api-scala-client • http://blog.tackley.net graham.tackley@guardian.co.uk
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×