SlideShare una empresa de Scribd logo
1 de 11
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’ as first class citizen
 End to end system developer
 Agile practitioner
 Learning Haskell
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
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
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 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#
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
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
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
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
Thank You

 Think

reactive. Happy coding 

Más contenido relacionado

La actualidad más candente

Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
elliando dias
 
A DSL for the visualization of Multi-Robot Systems
A DSL for the visualization of Multi-Robot SystemsA DSL for the visualization of Multi-Robot Systems
A DSL for the visualization of Multi-Robot Systems
Serge Stinckwich
 
Agile Development with Smalltalk - Short
Agile Development with Smalltalk - ShortAgile Development with Smalltalk - Short
Agile Development with Smalltalk - Short
Tomáš Kukol
 

La actualidad más candente (20)

Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)
Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)
Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)
 
Javantura v4 - The power of cloud in professional services company - Ivan Krn...
Javantura v4 - The power of cloud in professional services company - Ivan Krn...Javantura v4 - The power of cloud in professional services company - Ivan Krn...
Javantura v4 - The power of cloud in professional services company - Ivan Krn...
 
Building Massive AngularJS Apps
Building Massive AngularJS AppsBuilding Massive AngularJS Apps
Building Massive AngularJS Apps
 
Evolutionary Design Solid
Evolutionary Design SolidEvolutionary Design Solid
Evolutionary Design Solid
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 
PHP framework difference
PHP framework differencePHP framework difference
PHP framework difference
 
Kotlin REST & GraphQL API
Kotlin REST & GraphQL APIKotlin REST & GraphQL API
Kotlin REST & GraphQL API
 
Hexagonal architecture - message-oriented software design (PHP Barcelona 2015)
Hexagonal architecture - message-oriented software design (PHP Barcelona 2015)Hexagonal architecture - message-oriented software design (PHP Barcelona 2015)
Hexagonal architecture - message-oriented software design (PHP Barcelona 2015)
 
Introduction to lambda behave
Introduction to lambda behaveIntroduction to lambda behave
Introduction to lambda behave
 
How Symfony changed my life (#SfPot, Paris, 19th November 2015)
How Symfony changed my life (#SfPot, Paris, 19th November 2015)How Symfony changed my life (#SfPot, Paris, 19th November 2015)
How Symfony changed my life (#SfPot, Paris, 19th November 2015)
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
 
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
 
A DSL for the visualization of Multi-Robot Systems
A DSL for the visualization of Multi-Robot SystemsA DSL for the visualization of Multi-Robot Systems
A DSL for the visualization of Multi-Robot Systems
 
Presentation1.pptx
Presentation1.pptxPresentation1.pptx
Presentation1.pptx
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
Agile Development with Smalltalk - Short
Agile Development with Smalltalk - ShortAgile Development with Smalltalk - Short
Agile Development with Smalltalk - Short
 
Java Script Design Patterns with ES6, ES7, Babel
Java Script Design Patterns with ES6, ES7, BabelJava Script Design Patterns with ES6, ES7, Babel
Java Script Design Patterns with ES6, ES7, Babel
 
Dev381.Pp
Dev381.PpDev381.Pp
Dev381.Pp
 
.NET Standard - Introduction
.NET Standard - Introduction.NET Standard - Introduction
.NET Standard - Introduction
 
Vertical vs Horizontal Software Architecture
Vertical vs Horizontal Software ArchitectureVertical vs Horizontal Software Architecture
Vertical vs Horizontal Software Architecture
 

Similar a What is scala

Yahoo! Hadoop User Group - May Meetup - Extraordinarily rapid and robust data...
Yahoo! Hadoop User Group - May Meetup - Extraordinarily rapid and robust data...Yahoo! Hadoop User Group - May Meetup - Extraordinarily rapid and robust data...
Yahoo! Hadoop User Group - May Meetup - Extraordinarily rapid and robust data...
Hadoop User Group
 

Similar a What is scala (20)

Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overview
 
Assist software awesome scala
Assist software   awesome scalaAssist software   awesome scala
Assist software awesome scala
 
Lift web framework
Lift web frameworkLift web framework
Lift web framework
 
The State of Scala
The State of ScalaThe State of Scala
The State of Scala
 
Scala and jvm_languages_praveen_technologist
Scala and jvm_languages_praveen_technologistScala and jvm_languages_praveen_technologist
Scala and jvm_languages_praveen_technologist
 
Introduction To Grails
Introduction To GrailsIntroduction To Grails
Introduction To Grails
 
Bn1005 demo ppt core java
Bn1005 demo ppt core javaBn1005 demo ppt core java
Bn1005 demo ppt core java
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
 
A Tour Of Scala
A Tour Of ScalaA Tour Of Scala
A Tour Of Scala
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal Java
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bag
 
Scala and Spark are Ideal for Big Data
Scala and Spark are Ideal for Big DataScala and Spark are Ideal for Big Data
Scala and Spark are Ideal for Big Data
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
 
Yahoo! Hadoop User Group - May Meetup - Extraordinarily rapid and robust data...
Yahoo! Hadoop User Group - May Meetup - Extraordinarily rapid and robust data...Yahoo! Hadoop User Group - May Meetup - Extraordinarily rapid and robust data...
Yahoo! Hadoop User Group - May Meetup - Extraordinarily rapid and robust data...
 
OSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P KriensOSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P Kriens
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 
Java1
Java1Java1
Java1
 
Java
Java Java
Java
 
10 interesting things about java
10 interesting things about java10 interesting things about java
10 interesting things about java
 
Programming in HTML5 With Java Script and CSS3
Programming in HTML5 With Java Script and CSS3Programming in HTML5 With Java Script and CSS3
Programming in HTML5 With Java Script and CSS3
 

Más de Piyush Katariya (8)

Concurrency, Parallelism And IO
Concurrency,  Parallelism And IOConcurrency,  Parallelism And IO
Concurrency, Parallelism And IO
 
Handling the growth of data
Handling the growth of dataHandling the growth of data
Handling the growth of data
 
Expression problem
Expression problemExpression problem
Expression problem
 
Thinking Functionally
Thinking FunctionallyThinking Functionally
Thinking Functionally
 
My inspirations and learned lessons
My inspirations and learned lessonsMy inspirations and learned lessons
My inspirations and learned lessons
 
JavaScript (without DOM)
JavaScript (without DOM)JavaScript (without DOM)
JavaScript (without DOM)
 
Rise of the Single Page Application
Rise of the Single Page ApplicationRise of the Single Page Application
Rise of the Single Page Application
 
Introduction to Web Application Clustering
Introduction to Web Application ClusteringIntroduction to Web Application Clustering
Introduction to Web Application Clustering
 

Último

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

What is scala

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