2. About me
Author
of “jHighFun”
Visits localhost:8080 everyday
Love to hate language which does not
support „function’ as first class citizen
End to end system developer
Agile practitioner
Learning Haskell
3. This is for one who like to
Know(not learn) about Scala Programming Language
Increase software development productivity
Discover alternative, elegant JVM language other than Java
Search for less painful web application development
language
List of major frameworks available in Scala and their purpose
4. Why another JVM language(s)
Java bloated language specification sucks
Development productivity – Code less Do more
Treating best practices as Feature/Constructs
Higher level constructs
Less painful multithreaded/reactive programming
Choosing paradigm according to problem
Distributed computing with an ease
Less closer to von neumann arch.
More closer to business problem
6. Scala
OO, Functional, Statically typed
Designed by Martin Odersky
Needs JDK/JRE or CLR (.NET ) and its own SDK
Steep learning curve but worth the effort
Can speak and interact with JVM and libraries
Makes data computation fun
Inspired by
Haskell
Python
Ruby
Erlang
C#
7. Features in brief
case class - only state, no behavior
trait - work out mixins, decorators and multiple inheritance
object - Singleton, only way to realize “static”
Function/closure/lambda - First class citizen
Tail recursion - recurs as if you are iterating, avoiding stack overflow
Higher Order Functions - Accept and return Function
Operator overloading - operator is actually a method name
Pattern Matching and Extractor - RIP “if” clause
Advanced Collections Library - Eager, Lazy, Born for computation
Co-variance and Contra-variance
XML - first class citizen, Native support for parsing
Actors and Futures - less painful concurrent programming
Implicit - Support the un-supported
Dependency Injection - using traits and self types
Combinator Parser - for DSL guys
8. SBT – Simple Build Tool
•
•
•
•
•
•
•
•
•
•
•
•
•
Little or no configuration required for simple projects
Scala-based build definition that can use the full flexibility of Scala code
Accurate incremental recompilation using information extracted from the compiler
Continuous compilation and testing with triggered execution
Packages and publishes jars
Generates documentation with scaladoc
Supports mixed Scala/Java projects
Supports testing with JUnit , ScalaCheck, specs, and ScalaTest.
Starts the Scala REPL with project classes and dependencies on the classpath
Modularization supported with sub-projects
External project support (list a git repository as a dependency!)
Parallel task execution, including parallel test execution
Library management support: inline declarations, external Ivy or Maven
configuration files, or manual management
9. Web App Frameworks
BlueEyes - Web 3.0 framework, purely asynchronous
Bowler - RESTful, Multi-Channel ready
Finagle - fault tolerant, protocol-agnostic network client and server
Lift – Comet support, Secure, Modular
Play – MVC, TypeSafe recommendation
Scalatra – inspired by Sinatra from Ruby
Spray - REST/HTTP-based integration layers on top of Akka
10. Other Frameworks/Library
Akka - High performance distributed computing
Anorm - smart alternative to JDBC
GridGain – in memory/cloud computing
Hammurabi – rule engine DSL
Kestrel - Tiny queue system based on starling
ReactiveMongo - Async mongodb client
Saddle - optimized data computation
Sandra – for Cassandra databse
Scalaz - extending scala API even further
Scalding - for elephant called Hadoop
Scaloid – simplifying android development
Slick - Scala collections to query your database
Squeryl - ORM and cleaner DSL for SQL database