The place for sharing ideas and knowledge
Yes Scala Can!  Amir Moulavi                     Anders Eriksson       @mamirm                       @anders_erikssonamir....
Why● Weve found Scala and like it!● We would like to broaden the interest  amongst Java developers.● Hopefully this presen...
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      paradi...
Little history and background● 2006:  ○ major rewrite (v 2.0)● 2011:  ○ Company Typesafe is funded for professional    sup...
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 Evalu...
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...
Scala is conciseclass Person(val name:String, val age:Int)                                         Sc                     ...
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...
REPL and Tuples
Case classes
Case classes● Easier instantiation● Immutability in constructor parameters by  default● You get these methods for free   ○...
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 ...
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  ...
Powerful Collections● Safe  ○ Functional nature + Statically typed!● Fast  ○ Tuned and optimized collections operations● U...
Powerful Collections                    Scala                  Collections      Immutable                 Mutable
Powerful Collections● List   ○ Immutable and ListBuffer is mutable● Array   ○ Mutable● Set   ○ Immutable and mutable● Map ...
Powerful Collections with HigherOrder Functions
Traits
Traits● Definition:   ○ Provides a set of methods that implement     behaviour   ○ Requires a set of methods that paramete...
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               ...
Scala and Java Integration● Familiar development environments  ○ Eclipse, IntelliJ, Netbeans, ...● Familiar building tools...
Whats Scala advantage over Java     as a language choice?
●   implicit parameters●   pattern matching●   case classes●   type inferencing●   higher-kinded types●   monadic for comp...
Conclusion● Scala is not complex● Express your ideas in a concise way● Better code readability● Scala = Functional + Objec...
Where to go from here?Programming in Scala, 2nd editionby Martin Odersky, Lex Spoon andBill VennersScala for the Impatient...
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
Yes scala can!
Upcoming SlideShare
Loading in...5
×

Yes scala can!

4,153

Published on

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

Yes scala can!

  1. 1. The place for sharing ideas and knowledge
  2. 2. Yes Scala Can! Amir Moulavi Anders Eriksson @mamirm @anders_erikssonamir.moulavi@jayway.com anders.eriksson@jayway.com Jayway Stockholm 2012-05-30
  3. 3. 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!
  4. 4. Agenda● History and Background● Scala vs. Java: Similarities and Differences● Quick Journey to Scala● Book Raffle!
  5. 5. It has been a revolution!
  6. 6. Little history and background● 2001: ○ Design of Scala started ■ Goals: merge functional + object oriented paradigms● 2004: ○ First public release on JVM
  7. 7. Little history and background● 2006: ○ major rewrite (v 2.0)● 2011: ○ Company Typesafe is funded for professional support
  8. 8. Java vs. Scala (similarities)● Runs on JVM● Statically typed● Object oriented● Garbage collected
  9. 9. Java vs. Scala (differences)● Pure object orientation● Functional paradigm● Pattern matching● Mixin composition
  10. 10. Java vs. Scala (differences)● No checked exception● Implicit conversions● Flexible imports and access modifier● Read Evaluate Print Loop (REPL) console
  11. 11. Scala is a unifier
  12. 12. Scala is Object-oriented
  13. 13. Scala is Functional
  14. 14. Scala is statically typed
  15. 15. 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; }}
  16. 16. Scala is conciseclass Person(val name:String, val age:Int) Sc ala
  17. 17. Scala is expressive(1 to 10) filter (_ > 7)
  18. 18. REPLThe command line for Scala
  19. 19. Tuples( , )( , , )( , , , )( , , , , )( , , , , , )
  20. 20. 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
  21. 21. REPL and Tuples
  22. 22. Case classes
  23. 23. Case classes● Easier instantiation● Immutability in constructor parameters by default● You get these methods for free ○ toString() ○ equals() ○ hashCode() ○ apply() ○ copy()
  24. 24. Case classes
  25. 25. Pattern Matching
  26. 26. Pattern Matching● Similar to Javas switch statement● Let you match any sort of data● First-match policy
  27. 27. Pattern Matching
  28. 28. Higher Order Functions
  29. 29. 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)
  30. 30. Higher Order Functionsmap(f)filter(f)
  31. 31. Powerful Collections
  32. 32. 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!
  33. 33. Powerful Collections● Safe ○ Functional nature + Statically typed!● Fast ○ Tuned and optimized collections operations● Universal ○ The same operation on any type
  34. 34. Powerful Collections Scala Collections Immutable Mutable
  35. 35. Powerful Collections● List ○ Immutable and ListBuffer is mutable● Array ○ Mutable● Set ○ Immutable and mutable● Map ○ Immutable and mutable● ... and String! ○
  36. 36. Powerful Collections with HigherOrder Functions
  37. 37. Traits
  38. 38. 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
  39. 39. Traits● Interfaces with behaviors● Fundamental unit of code re-use● Extremely powerful tool in OO design
  40. 40. Rich interfacesTraits Stackable modifications
  41. 41. Traits
  42. 42. Parallel Collections
  43. 43. Parallel Collections● Supports the same operations as sequential ones● Easily convert sequential to parallel collection
  44. 44. Parallel Collections
  45. 45. Scala and Java Integration● Seamless integration● Make full use of existing libraries and code Scala Java
  46. 46. 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!
  47. 47. Whats Scala advantage over Java as a language choice?
  48. 48. ● 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● ...
  49. 49. Conclusion● Scala is not complex● Express your ideas in a concise way● Better code readability● Scala = Functional + Object oriented paradigms.● Scala scales with programmers
  50. 50. Where to go from here?Programming in Scala, 2nd editionby Martin Odersky, Lex Spoon andBill VennersScala for the Impatient byCay Hortsmann
  51. 51. Where to go from here?Scala Stockholm User Group http://www.meetup.com/Scala-Stockholm/
  52. 52. Where to go from here?Scala course "Fast-Track to Scala" fromTypesafe18-19 September, 2012
  53. 53. Where to go from here?
  54. 54. Questions?
  55. 55. Thank you!
  56. 56. The place for sharing ideas and knowledge
  1. A particular slide catching your eye?

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

×