1. Play-ing with Scala Futures
Backend guy at Cloud9rs Ltd.
(aka Senior Software Engineer)
tabdulradi@cloud9ers.com
twitter.com/tamer_radi
(few tweets, if any!)
2. About Scala
Martin Odersky
● He designed Java Generics
● Built the javac compiler
● In 2001, designed Scala
● In 2011, he founded
Typesafe Inc., a company
to support and promote
Scala
4. Why Scala
Can borrow from Java (runs on JVM)
Concise
Very OOP, Very Functional
Statically type, but with type inference.
Lazy values
class Rectangle(val w: Int, val l: Int)
class Square(s: Int) extends Rectangle(s, s)
5. Why Scala - Traits
Traits for cross-cutting modularity
Like Interfaces, but with implementation
class Man { def walk() {....} }
trait SuperPowers { def fly() {....} }
class SuperMan extends Man with SuperPowers
val superMan = new SuperMan
val superMan = new Man with SuperPowers
object SuperMan extends Man with SuperPowers {
def doLaserAndStuff() { ... } }
6. Why Scala - Concurrency
Parallel Collections
(1 to 10000).par.map(_ * 2).reduce(_ + _)
Note: reduce operation is not ordered
Futures
future { slowOperation() } foreach println
println("Hey, I don't have to wait")
Akka Actors (http://akka.io)
7. Play Framework
Stateless (easy to scale)
Built on Akka
Non-blocking I/O (uses JBoss Netty)
Real-time & Streaming are First Class Citizins
Websockets
EventSource
Comet
Production support by Typesafe
Many cloud deployment options