JVM Based Consise - Less Code that does more Parallel Ready - Builtin Support via Parallel Libs Expressive - Combines OO and FP Fewer Bugs - Static Inferred Type System
Lausanne 1996-1997 - Pizza 1998-2000 - GJ, Java Generics, javac 2003-2006 - Scala as an academic ‘Experiment’ 2006-Now - Scala in production 2014 - Ten years of Scala
Use any underlying Java Library direct from Scala Scala can extend underlying Java types with new features Scala compiles to Java .class files and hence uses the JVM runtime environment (JIT)
for iterative and parallel operations Async - Future (impl Promise) based asynchronous model DSL - Internal and External Domain Specific Languages via Parser Combinators
name; public final int age; Person(String name, int age) { this.name = name; this.age = age; } } Scala … case class Person(val name : String, val age : Int)
to increase readability Works seamlessly* with Java Selectively Migrate project/libraries Common entry point is testing framework Programmer Joy <==> Programer Productivity The ‘well of confusion’ - idiom overload
time. e.g. Options to exclude NullPointerExceptions Immutability and Pure functions Collapses concurrent update problems Easy to test Scala Test and Scala Check More time coding Less time in debugger