scala: an experience report

51
Scala Experience Report Mark Needham and Liz Douglass

Upload: mark-needham

Post on 10-May-2015

3.425 views

Category:

Technology


1 download

DESCRIPTION

An experience report after using scala for 6 months.

TRANSCRIPT

Page 1: Scala: An experience report

Scala Experience Report

Mark Needham and Liz Douglass

Page 2: Scala: An experience report

Funny image?

Page 3: Scala: An experience report

Funny image?

GAME

ON!

Page 4: Scala: An experience report

Should the project have been done in

Java?

Does it really speed up the development as was hoped?

What features of the language and patterns of usage have been successes?

Is it easier to maintain and extend than an equivalent Java code base?

Page 5: Scala: An experience report

Testing

Templating

Domain

Page 6: Scala: An experience report
Page 7: Scala: An experience report

Testing

Page 8: Scala: An experience report

scalatest

specs2

JUnit

scalacheck

Page 9: Scala: An experience report

Unit testing

Page 10: Scala: An experience report

Functional Testing

Page 11: Scala: An experience report

Test DSL

Page 12: Scala: An experience report

First class functions

Page 13: Scala: An experience report

Test DSL

Page 14: Scala: An experience report

# of unit tests:449

# of functional tests:353

# of integration tests:280

Page 15: Scala: An experience report

Unit testing

Page 16: Scala: An experience report

Unit testing

Page 17: Scala: An experience report

BookTests

ArticleTests

ChapterTests

Unit testing

Page 18: Scala: An experience report

Templating

Page 19: Scala: An experience report

Scalatra

Page 20: Scala: An experience report

Scalatra Scalate

Page 21: Scala: An experience report

Scalatra Scalate

Mustache

scaml

jade

SSP

Page 22: Scala: An experience report

Controller

Page 23: Scala: An experience report

Mustache

Page 24: Scala: An experience report

Jade

Page 25: Scala: An experience report

View Helper

Page 26: Scala: An experience report

Jade

Page 27: Scala: An experience report

Domain

Page 28: Scala: An experience report

Presentation Model

Page 29: Scala: An experience report

XML

Page 30: Scala: An experience report

More XML

Page 31: Scala: An experience report

More XML

Page 32: Scala: An experience report

And not just XML…

Page 33: Scala: An experience report

Going too far!

Page 34: Scala: An experience report

Traits

Which example was this supposed to be?ContentRepository - JUNE

Page 35: Scala: An experience report

1. Utilities

Traits

http://blog.schauderhaft.de/2011/08/21/usage-patterns-of-scala-traits/

Page 36: Scala: An experience report

2. Presentation Model

Traits

Page 37: Scala: An experience report

3. Helpers to Helpers

Traits

Page 38: Scala: An experience report

4. Wanna be objects

Traits

Page 39: Scala: An experience report

5. Type container

Traits

Page 40: Scala: An experience report

6. Traits with standards

Traits

Page 41: Scala: An experience report

Implicits

Page 42: Scala: An experience report

Implicits

Page 43: Scala: An experience report

Implicits

Page 44: Scala: An experience report

Options

Page 45: Scala: An experience report

Refactoring

IDE support

Code discoverability

Method visibility

Less code to

change

Tendency to have fewer

tests

Page 46: Scala: An experience report

In Retrospect …

Page 47: Scala: An experience report

Should the project have been done in

Java?

Does it really speed up the development as was hoped?

What features of the language and patterns of usage have been successes?

Is it easier to maintain and extend than an equivalent Java code base?

Page 48: Scala: An experience report
Page 49: Scala: An experience report

Greater potential to

high talented

developers

Increased

developer

productivity

Built in XML support

Seamless

integration with

Java + eco-

system

Comes with SBT

– powerful built

tool

Gentle learning curve for Java developers

Runs on the

JVM

Bigger potential to screw things up

Tool support

less matureCommunity is younger and smaller

Scala compiler slower than

Java’s

Page 50: Scala: An experience report

Easy to learn

Functional

language

Concise code

SBT power

XML support

Case classesJava integration

IDE support

Slow compiler

Complex code

SBT complexity

Immature frameworks

Page 51: Scala: An experience report

Questions