• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Yes scala can!

Yes scala can!



The presentation I had for Stockholm Knowledge Network. For demo code please refer to https://github.com/anderseriksson/yesscalacan

The presentation I had for Stockholm Knowledge Network. For demo code please refer to https://github.com/anderseriksson/yesscalacan



Total Views
Views on SlideShare
Embed Views



1 Embed 1

http://us-w1.rockmelt.com 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 @anders_erikssonamir.moulavi@jayway.com anders.eriksson@jayway.com 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) { this.name = name; this.int = 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 http://www.meetup.com/Scala-Stockholm/
    • 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