What is Scala
Piyush Katariya
corporate.piyush@gmail.com
About me
 Author

of “jHighFun”
 Visits localhost:8080 everyday
 Love to hate language which does not
support „function...
This is for one who like to






Know(not learn) about Scala Programming Language
Increase software development prod...
Why another JVM language(s)











Java bloated language specification sucks
Development productivity – Code ...
Cool kids on JVM











Ceylon
Clojure
Groovy
JavaScript(Rhino, Nashorn)
JRuby
Jython
Kotlin
Scala
Xtend
Scala









OO, Functional, Statically typed
Designed by Martin Odersky
Needs JDK/JRE or CLR (.NET ) and its own...
Features in brief
















case class - only state, no behavior
trait - work out mixins, decorators ...
SBT – Simple Build Tool
•
•
•
•
•
•

•
•
•
•
•
•

•

Little or no configuration required for simple projects
Scala-based b...
Web App Frameworks









BlueEyes - Web 3.0 framework, purely asynchronous
Bowler - RESTful, Multi-Channel ready...
Other Frameworks/Library














Akka - High performance distributed computing
Anorm - smart alternativ...
Thank You

 Think

reactive. Happy coding 
Upcoming SlideShare
Loading in …5
×

What is scala

669 views

Published on

High Level Introduction to Scala Programming Language

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
669
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

What is scala

  1. 1. What is Scala Piyush Katariya corporate.piyush@gmail.com
  2. 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. 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. 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
  5. 5. Cool kids on JVM          Ceylon Clojure Groovy JavaScript(Rhino, Nashorn) JRuby Jython Kotlin Scala Xtend
  6. 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. 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. 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. 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. 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
  11. 11. Thank You  Think reactive. Happy coding 

×