Yes scala can!
Upcoming SlideShare
Loading in...5

Yes scala can!



The presentation I had for Stockholm Knowledge Network. For demo code please refer to

The presentation I had for Stockholm Knowledge Network. For demo code please refer to



Total Views
Views on SlideShare
Embed Views



2 Embeds 4 3 1


Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Yes scala can! Yes scala can! Presentation Transcript

  • The place for sharing ideas and knowledge
  • Yes Scala Can! Amir Moulavi Anders Eriksson @mamirm Jayway Stockholm 2012-05-30
  • Why● Weve found Scala and like it!● We would like to broaden the interest amongst Java developers.● Hopefully this presentation will inspire you to look more into Scala!
  • Agenda● History and Background● Scala vs. Java: Similarities and Differences● Quick Journey to Scala● Book Raffle!
  • It has been a revolution!
  • Little history and background● 2001: ○ Design of Scala started ■ Goals: merge functional + object oriented paradigms● 2004: ○ First public release on JVM
  • Little history and background● 2006: ○ major rewrite (v 2.0)● 2011: ○ Company Typesafe is funded for professional support
  • Java vs. Scala (similarities)● Runs on JVM● Statically typed● Object oriented● Garbage collected
  • Java vs. Scala (differences)● Pure object orientation● Functional paradigm● Pattern matching● Mixin composition
  • Java vs. Scala (differences)● No checked exception● Implicit conversions● Flexible imports and access modifier● Read Evaluate Print Loop (REPL) console
  • Scala is a unifier
  • Scala is Object-oriented
  • Scala is Functional
  • Scala is statically typed
  • Scala is concisepublic class Person { private final String name; private final int age; public Person(String name, int age) { = name; = int; } public String getName() { return name; Java } public int getAge() { return age; }}
  • Scala is conciseclass Person(val name:String, val age:Int) Sc ala
  • Scala is expressive(1 to 10) filter (_ > 7)
  • REPLThe command line for Scala
  • Tuples( , )( , , )( , , , )( , , , , )( , , , , , )
  • Tuples● Saves you the tedium of defining simplistic data-heavy classes● Immutable● Each value different type● Can contain up to 22 values● Indexed from 1
  • REPL and Tuples
  • Case classes
  • Case classes● Easier instantiation● Immutability in constructor parameters by default● You get these methods for free ○ toString() ○ equals() ○ hashCode() ○ apply() ○ copy()
  • Case classes
  • Pattern Matching
  • Pattern Matching● Similar to Javas switch statement● Let you match any sort of data● First-match policy
  • Pattern Matching
  • Higher Order Functions
  • Higher Order Functions● Functions are first class citizens in Scala F:A B● Higher Order Functions are functions that take functions as input parameters or return them as results F : (A B) (R S)
  • Higher Order Functionsmap(f)filter(f)
  • Powerful Collections
  • Powerful Collections● Easy to use ○ A small vocabulary of 20-50 methods to solve most collection problems● Concise ○ A single word instead of several loops!
  • Powerful Collections● Safe ○ Functional nature + Statically typed!● Fast ○ Tuned and optimized collections operations● Universal ○ The same operation on any type
  • Powerful Collections Scala Collections Immutable Mutable
  • Powerful Collections● List ○ Immutable and ListBuffer is mutable● Array ○ Mutable● Set ○ Immutable and mutable● Map ○ Immutable and mutable● ... and String! ○
  • Powerful Collections with HigherOrder Functions
  • Traits
  • Traits● Definition: ○ Provides a set of methods that implement behaviour ○ Requires a set of methods that parameterized the provided behaviour ○ Does not specify any state variables
  • Traits● Interfaces with behaviors● Fundamental unit of code re-use● Extremely powerful tool in OO design
  • Rich interfacesTraits Stackable modifications
  • Traits
  • Parallel Collections
  • Parallel Collections● Supports the same operations as sequential ones● Easily convert sequential to parallel collection
  • Parallel Collections
  • Scala and Java Integration● Seamless integration● Make full use of existing libraries and code Scala Java
  • Scala and Java Integration● Familiar development environments ○ Eclipse, IntelliJ, Netbeans, ...● Familiar building tools like Maven ○ SBT● If you are a Java developer, youre halfway there!
  • Whats Scala advantage over Java as a language choice?
  • ● implicit parameters● pattern matching● case classes● type inferencing● higher-kinded types● monadic for comprehension● variance annotation● traits● default and named argument● abstract values● by-name terms● type aliasing● self types● path-dependent types● structural types● ...
  • Conclusion● Scala is not complex● Express your ideas in a concise way● Better code readability● Scala = Functional + Object oriented paradigms.● Scala scales with programmers
  • Where to go from here?Programming in Scala, 2nd editionby Martin Odersky, Lex Spoon andBill VennersScala for the Impatient byCay Hortsmann
  • Where to go from here?Scala Stockholm User Group
  • Where to go from here?Scala course "Fast-Track to Scala" fromTypesafe18-19 September, 2012
  • Where to go from here?
  • Questions?
  • Thank you!
  • The place for sharing ideas and knowledge