SlideShare uma empresa Scribd logo
1 de 28
Scalaand its Ecosystem Petr Hošek D3S Seminar, September 2010
Language is useless without its ecosystem. Tools, libraries, frameworks, etc. Growing usage demands the need of ecosystem. Java ecosystem is not enough for Scala.
01Scala compiler 02Scala tools & libraries 03Scala frameworks 04Collaborative Scaladoc 05Lessons learned 06Questions & Answers
01Scala compiler
Second generation of Scala compiler. Oficially named NSC (New Scala Compiler). Entirely developed in Scala itself (self-hosted). Compiles Scala directly into Java bytecode.
Allows to be used in several ways. Standalone, interactive, embedded. Designed to be completely re-entrant. Can be instantiated as any other class. Compilation consists of several phases. Each phases transforms the syntax tree.
Developed in entirely modular way. Compiler is composed of several component. Represented by traits. Compiler can be easily extended via plugins. They can be inserted in all phases of compilation.
02Scala tools & libraries
They form the basis of Scala ecosystem. Many new tools appeared in the last few months. Most of them replaces Java equivalents. New tools are coming up every day.
Well-known Scala tools and libraries: ,[object Object],Package sharing tool. ,[object Object],Tool for automatic test case generation. ,[object Object],Concurrent, scalable applications development. ,[object Object],Library for handling configuration and logging. ,[object Object],Extensions to the standard Scala library.
simple-build-tool sbaz ScalaTest, ScalaCheck, Specs Scalaz, Scalax Configgy ScalaModules, BindForge Akka, Kestrel Scalate Lift, Scalatra, sweet, pinky
simple-build-tool Simple but powerful build tool for Scala. Configuration is written directly in Scala. Provides interactive and batch mode. Dependency management support. Integrated supportfor many Scalatools. Lot of pluginsand extensions do exists.
import sbt._class ExampleProject(info: ProjectInfo) extendsParentProject(info) { override def fork = forkRun(Some(newFile("demo")), "-Xmx2G" :: Nil)   lazy val subA = project("subA", "Sub Project A", newExampleSubProject(_))  lazy val subB = project("subB", "Sub Project B", newExampleSubProject(_))   class ExampleSubProject(info: ProjectInfo) extendsDefaultProject(info) { defcompileOptions: Seq[CompileOption] = Verbose :: Nil    val specs = "org.scala-tools.testing" % "specs_2.8.0" % "1.6.5" % "test->default" }}
specs Behaviour-driven design framework for Scala. Simple and typed language for specifications. Benefits from Scala expressive syntax. Integration with testing tools and frameworks. JUnit, ScalaCheck, Mockito, etc. Support for literate programming.
classGreetingSpecification extendsHtmlSpecificationwithTextile{  "The greeting application"is<t>h3. PresentationThis new application should say "hello" in different languages.For example,<ex>by default, saying hello by default should use English</ex> { greet must_== "hello" } Then, other languages, like <ex>French and German should be supported too</ex> { eg {    greet("French") must_== "bonjour"    greet("German") must_== "hallo"  } }<ex>Japanese should be supported also</ex> { notImplemented } </t>}
Configgy Library for handling configuration and logging. Simple configuration format. But still very powerful. Support for JMX and notification of changes. Extremelly simple API.
include "/opt/config/local.conf" log (inherit="log-base"){  filename = "/var/log/example.log"   level = "debug" utc = true verbose {    node = "com.example.*"    level = "trace"  } } hostname = "example.com" port = 3000 Configgy.configure("~/example.conf") valconfig = Configgy.config valhostname = config.getString("hostname", "localhost") valport = config.getInt("port", 3000) vallog = Logger.get log.error("Unable to listen on %s:%d!", hostname, port)
03Scala frameworks
Akka framework Framework for concurrent, fault-tolerant, scalable applications development. Based on event-driven approach. Provides actors, STM, transactors, etc. Together with Scala as well as Java API. Many add-on modules available. REST, Comet, Spring, Guice, OSGi integration, etc.
ScalaModules Domain specific language for OSGi development. Written in Scala language. High-level abstraction of OSGi concepts. Eliminates much of the boilerplate code. Recently became Eclipse.org project.
Scalate Powerfull templating engine for Scala. Generating text or markup. Three different template formats. Mustache, Scaml and SSP. Each one designated for different use. Provides Console for easy template testing.
Lift web framework Expressive and elegant web framework. Benefiting from Scala language features. Embraces View-First approach to MVC. Importance of scalability and security. Without loss of performance or maintainability. Native support for Ajax a Comet.
04Collaborative Scaladoc
Newest addition to Scala ecosystem. Consisting currently from two applications. Contribution of Scala project documentation.  New approach of documentation authoring. Using the concepts of social collaboration.
Scaladoc Analogy of Javadoc for Scala. Part of Scala compiler currently as second generation. Contains new sleek and modern interface. Provides improved comment syntax. Supports wiki-like syntax in the source comments.
Colladoc Allows to edit Scala symbols documentation. Lift web application running the Scala compiler. Developed as a Google SoC 2010 project. Now being developed as open-source project. Based heavily upon Scaladoc 2 functionality. „Do not reinvent the wheel.“
Mergedoc Allows to merge changes into the source-code. Simple command-line utility. Built on top of Scala compiler. Not yet officially released. Reimplementation of scaladoc-merge tool.
Collaboration is the main goal. Using collaborative development tools. Joining the effort is easy. Fork and contribute at GitHub. Track the development at Lighthouse. Learn more at http://petrhosek.name/

Mais conteúdo relacionado

Mais procurados

Scala Presentation Work
Scala Presentation WorkScala Presentation Work
Scala Presentation WorkSkills Matter
 
Build Cloud Applications with Akka and Heroku
Build Cloud Applications with Akka and HerokuBuild Cloud Applications with Akka and Heroku
Build Cloud Applications with Akka and HerokuSalesforce Developers
 
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...scalaconfjp
 
Introduction to Spark SQL and Catalyst / Spark SQLおよびCalalystの紹介
Introduction to Spark SQL and Catalyst / Spark SQLおよびCalalystの紹介Introduction to Spark SQL and Catalyst / Spark SQLおよびCalalystの紹介
Introduction to Spark SQL and Catalyst / Spark SQLおよびCalalystの紹介scalaconfjp
 
Testing Spark and Scala
Testing Spark and ScalaTesting Spark and Scala
Testing Spark and Scaladatamantra
 
Building Scalable Applications with Laravel
Building Scalable Applications with LaravelBuilding Scalable Applications with Laravel
Building Scalable Applications with LaravelMuhammad Shakeel
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Codemotion
 
Scala Past, Present & Future
Scala Past, Present & FutureScala Past, Present & Future
Scala Past, Present & Futuremircodotta
 
Drilling the Async Library
Drilling the Async LibraryDrilling the Async Library
Drilling the Async LibraryKnoldus Inc.
 
New Features of JAVA SE8
New Features of JAVA SE8New Features of JAVA SE8
New Features of JAVA SE8Dinesh Pathak
 
Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overviewRazvan Cojocaru
 
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on ScalaAndrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on ScalaScala Italy
 
Lambda Behave - Java 8's Testing Framework
Lambda Behave - Java 8's Testing FrameworkLambda Behave - Java 8's Testing Framework
Lambda Behave - Java 8's Testing Frameworksara stanford
 

Mais procurados (19)

Scala Presentation Work
Scala Presentation WorkScala Presentation Work
Scala Presentation Work
 
Build Cloud Applications with Akka and Heroku
Build Cloud Applications with Akka and HerokuBuild Cloud Applications with Akka and Heroku
Build Cloud Applications with Akka and Heroku
 
Java 8 concurrency abstractions
Java 8 concurrency abstractionsJava 8 concurrency abstractions
Java 8 concurrency abstractions
 
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
 
Introduction to Spark SQL and Catalyst / Spark SQLおよびCalalystの紹介
Introduction to Spark SQL and Catalyst / Spark SQLおよびCalalystの紹介Introduction to Spark SQL and Catalyst / Spark SQLおよびCalalystの紹介
Introduction to Spark SQL and Catalyst / Spark SQLおよびCalalystの紹介
 
Testing Spark and Scala
Testing Spark and ScalaTesting Spark and Scala
Testing Spark and Scala
 
Introducing LINQ
Introducing LINQIntroducing LINQ
Introducing LINQ
 
Building Scalable Applications with Laravel
Building Scalable Applications with LaravelBuilding Scalable Applications with Laravel
Building Scalable Applications with Laravel
 
Lecture1
Lecture1Lecture1
Lecture1
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
 
Scala Jump Start
Scala Jump StartScala Jump Start
Scala Jump Start
 
Scala
ScalaScala
Scala
 
Scala Past, Present & Future
Scala Past, Present & FutureScala Past, Present & Future
Scala Past, Present & Future
 
Drilling the Async Library
Drilling the Async LibraryDrilling the Async Library
Drilling the Async Library
 
New Features of JAVA SE8
New Features of JAVA SE8New Features of JAVA SE8
New Features of JAVA SE8
 
Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overview
 
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on ScalaAndrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
 
Java
JavaJava
Java
 
Lambda Behave - Java 8's Testing Framework
Lambda Behave - Java 8's Testing FrameworkLambda Behave - Java 8's Testing Framework
Lambda Behave - Java 8's Testing Framework
 

Destaque

Lightbend Training for Scala, Akka, Play Framework and Apache Spark
Lightbend Training for Scala, Akka, Play Framework and Apache SparkLightbend Training for Scala, Akka, Play Framework and Apache Spark
Lightbend Training for Scala, Akka, Play Framework and Apache SparkLightbend
 
Typesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and PlayTypesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and PlayLuka Zakrajšek
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedInYevgeniy Brikman
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPRafal Gancarz
 
Project Jigsaw in JDK 9: Modularity Comes To Java
Project Jigsaw in JDK 9: Modularity Comes To JavaProject Jigsaw in JDK 9: Modularity Comes To Java
Project Jigsaw in JDK 9: Modularity Comes To JavaC4Media
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M usersJongyoon Choi
 
SQL to Hive Cheat Sheet
SQL to Hive Cheat SheetSQL to Hive Cheat Sheet
SQL to Hive Cheat SheetHortonworks
 
Amazon EMR Deep Dive & Best Practices
Amazon EMR Deep Dive & Best PracticesAmazon EMR Deep Dive & Best Practices
Amazon EMR Deep Dive & Best PracticesAmazon Web Services
 

Destaque (9)

Lightbend Training for Scala, Akka, Play Framework and Apache Spark
Lightbend Training for Scala, Akka, Play Framework and Apache SparkLightbend Training for Scala, Akka, Play Framework and Apache Spark
Lightbend Training for Scala, Akka, Play Framework and Apache Spark
 
Scala
ScalaScala
Scala
 
Typesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and PlayTypesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and Play
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
 
Project Jigsaw in JDK 9: Modularity Comes To Java
Project Jigsaw in JDK 9: Modularity Comes To JavaProject Jigsaw in JDK 9: Modularity Comes To Java
Project Jigsaw in JDK 9: Modularity Comes To Java
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M users
 
SQL to Hive Cheat Sheet
SQL to Hive Cheat SheetSQL to Hive Cheat Sheet
SQL to Hive Cheat Sheet
 
Amazon EMR Deep Dive & Best Practices
Amazon EMR Deep Dive & Best PracticesAmazon EMR Deep Dive & Best Practices
Amazon EMR Deep Dive & Best Practices
 

Semelhante a Lessons Learned: Scala and its Ecosystem

Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Codemotion
 
Refactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 RecapRefactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 RecapDave Orme
 
Alberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsAlberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsScala Italy
 
Scala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSScala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSAlberto Paro
 
Play Template Engine Based On Scala
Play Template Engine Based On ScalaPlay Template Engine Based On Scala
Play Template Engine Based On ScalaKnoldus Inc.
 
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsTen Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsMetaDesign Solutions
 
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Codemotion
 
Assist software awesome scala
Assist software   awesome scalaAssist software   awesome scala
Assist software awesome scalaAssistSoftware
 
A Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to ScalaA Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to ScalaDerek Chen-Becker
 
Scala for n00bs by a n00b.
Scala for n00bs by a n00b.Scala for n00bs by a n00b.
Scala for n00bs by a n00b.brandongulla
 
Bhadale Group of Companies - digital projects
Bhadale Group of Companies - digital projectsBhadale Group of Companies - digital projects
Bhadale Group of Companies - digital projectsVijayananda Mohire
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
Modular programming Using Object in Scala
Modular programming Using Object in ScalaModular programming Using Object in Scala
Modular programming Using Object in ScalaKnoldus Inc.
 
Infographic on Scala Programming Language
Infographic on Scala Programming LanguageInfographic on Scala Programming Language
Infographic on Scala Programming LanguagePaddy Lock
 
Scala days 2016 overview
Scala days 2016 overviewScala days 2016 overview
Scala days 2016 overviewMayank Patel
 

Semelhante a Lessons Learned: Scala and its Ecosystem (20)

Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
 
Refactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 RecapRefactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 Recap
 
Scala a case4
Scala a case4Scala a case4
Scala a case4
 
Alberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsAlberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.js
 
Scala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSScala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJS
 
Unit 1 notes.pdf
Unit 1 notes.pdfUnit 1 notes.pdf
Unit 1 notes.pdf
 
Play Template Engine Based On Scala
Play Template Engine Based On ScalaPlay Template Engine Based On Scala
Play Template Engine Based On Scala
 
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsTen Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
 
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
 
Assist software awesome scala
Assist software   awesome scalaAssist software   awesome scala
Assist software awesome scala
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
A Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to ScalaA Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to Scala
 
Scala for n00bs by a n00b.
Scala for n00bs by a n00b.Scala for n00bs by a n00b.
Scala for n00bs by a n00b.
 
Bhadale Group of Companies - digital projects
Bhadale Group of Companies - digital projectsBhadale Group of Companies - digital projects
Bhadale Group of Companies - digital projects
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
SBT Crash Course
SBT Crash CourseSBT Crash Course
SBT Crash Course
 
Modular programming Using Object in Scala
Modular programming Using Object in ScalaModular programming Using Object in Scala
Modular programming Using Object in Scala
 
Infographic on Scala Programming Language
Infographic on Scala Programming LanguageInfographic on Scala Programming Language
Infographic on Scala Programming Language
 
Appsody
AppsodyAppsody
Appsody
 
Scala days 2016 overview
Scala days 2016 overviewScala days 2016 overview
Scala days 2016 overview
 

Último

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Lessons Learned: Scala and its Ecosystem

  • 1. Scalaand its Ecosystem Petr Hošek D3S Seminar, September 2010
  • 2. Language is useless without its ecosystem. Tools, libraries, frameworks, etc. Growing usage demands the need of ecosystem. Java ecosystem is not enough for Scala.
  • 3. 01Scala compiler 02Scala tools & libraries 03Scala frameworks 04Collaborative Scaladoc 05Lessons learned 06Questions & Answers
  • 5. Second generation of Scala compiler. Oficially named NSC (New Scala Compiler). Entirely developed in Scala itself (self-hosted). Compiles Scala directly into Java bytecode.
  • 6. Allows to be used in several ways. Standalone, interactive, embedded. Designed to be completely re-entrant. Can be instantiated as any other class. Compilation consists of several phases. Each phases transforms the syntax tree.
  • 7. Developed in entirely modular way. Compiler is composed of several component. Represented by traits. Compiler can be easily extended via plugins. They can be inserted in all phases of compilation.
  • 8. 02Scala tools & libraries
  • 9. They form the basis of Scala ecosystem. Many new tools appeared in the last few months. Most of them replaces Java equivalents. New tools are coming up every day.
  • 10.
  • 11. simple-build-tool sbaz ScalaTest, ScalaCheck, Specs Scalaz, Scalax Configgy ScalaModules, BindForge Akka, Kestrel Scalate Lift, Scalatra, sweet, pinky
  • 12. simple-build-tool Simple but powerful build tool for Scala. Configuration is written directly in Scala. Provides interactive and batch mode. Dependency management support. Integrated supportfor many Scalatools. Lot of pluginsand extensions do exists.
  • 13. import sbt._class ExampleProject(info: ProjectInfo) extendsParentProject(info) { override def fork = forkRun(Some(newFile("demo")), "-Xmx2G" :: Nil)   lazy val subA = project("subA", "Sub Project A", newExampleSubProject(_)) lazy val subB = project("subB", "Sub Project B", newExampleSubProject(_))   class ExampleSubProject(info: ProjectInfo) extendsDefaultProject(info) { defcompileOptions: Seq[CompileOption] = Verbose :: Nil  val specs = "org.scala-tools.testing" % "specs_2.8.0" % "1.6.5" % "test->default" }}
  • 14. specs Behaviour-driven design framework for Scala. Simple and typed language for specifications. Benefits from Scala expressive syntax. Integration with testing tools and frameworks. JUnit, ScalaCheck, Mockito, etc. Support for literate programming.
  • 15. classGreetingSpecification extendsHtmlSpecificationwithTextile{  "The greeting application"is<t>h3. PresentationThis new application should say "hello" in different languages.For example,<ex>by default, saying hello by default should use English</ex> { greet must_== "hello" } Then, other languages, like <ex>French and German should be supported too</ex> { eg {    greet("French") must_== "bonjour"    greet("German") must_== "hallo"  } }<ex>Japanese should be supported also</ex> { notImplemented } </t>}
  • 16. Configgy Library for handling configuration and logging. Simple configuration format. But still very powerful. Support for JMX and notification of changes. Extremelly simple API.
  • 17. include "/opt/config/local.conf" log (inherit="log-base"){ filename = "/var/log/example.log" level = "debug" utc = true verbose { node = "com.example.*" level = "trace" } } hostname = "example.com" port = 3000 Configgy.configure("~/example.conf") valconfig = Configgy.config valhostname = config.getString("hostname", "localhost") valport = config.getInt("port", 3000) vallog = Logger.get log.error("Unable to listen on %s:%d!", hostname, port)
  • 19. Akka framework Framework for concurrent, fault-tolerant, scalable applications development. Based on event-driven approach. Provides actors, STM, transactors, etc. Together with Scala as well as Java API. Many add-on modules available. REST, Comet, Spring, Guice, OSGi integration, etc.
  • 20. ScalaModules Domain specific language for OSGi development. Written in Scala language. High-level abstraction of OSGi concepts. Eliminates much of the boilerplate code. Recently became Eclipse.org project.
  • 21. Scalate Powerfull templating engine for Scala. Generating text or markup. Three different template formats. Mustache, Scaml and SSP. Each one designated for different use. Provides Console for easy template testing.
  • 22. Lift web framework Expressive and elegant web framework. Benefiting from Scala language features. Embraces View-First approach to MVC. Importance of scalability and security. Without loss of performance or maintainability. Native support for Ajax a Comet.
  • 24. Newest addition to Scala ecosystem. Consisting currently from two applications. Contribution of Scala project documentation. New approach of documentation authoring. Using the concepts of social collaboration.
  • 25. Scaladoc Analogy of Javadoc for Scala. Part of Scala compiler currently as second generation. Contains new sleek and modern interface. Provides improved comment syntax. Supports wiki-like syntax in the source comments.
  • 26. Colladoc Allows to edit Scala symbols documentation. Lift web application running the Scala compiler. Developed as a Google SoC 2010 project. Now being developed as open-source project. Based heavily upon Scaladoc 2 functionality. „Do not reinvent the wheel.“
  • 27. Mergedoc Allows to merge changes into the source-code. Simple command-line utility. Built on top of Scala compiler. Not yet officially released. Reimplementation of scaladoc-merge tool.
  • 28. Collaboration is the main goal. Using collaborative development tools. Joining the effort is easy. Fork and contribute at GitHub. Track the development at Lighthouse. Learn more at http://petrhosek.name/
  • 30. Many dimensions of simplicity and complexity. Scala itself is a relatively simple language. Grammar is somewhat smaller than Java or C#. Scalaconcepts are very general and orthogonal. They can be combined in a large number of ways.
  • 31. Scala is different from mainstream languages. C/C++, Java, C#, etc. Scala libraries & tools takes different approach. simple-build-tool, specs, Lift framework, etc. Learning Scala is not difficult.