SlideShare una empresa de Scribd logo
1 de 31
Scalaand its Ecosystem Petr Hošek @petrh CZJUG, September 2010
What is language ecosystem?
Tools, libraries, frameworks, community, etc. Language is useless without its ecosystem.
Why Scala ecosystem?
With growing usage grows the need. Java ecosystem is not enough.
Scala Compiler Most important part of the Scala ecosystem.
Compiler overview Version 2.8 released in July. Contains many new features. Second generation of Scala compiler. Oficially named NSC (New Scala Compiler). Entirely developed in Scala itself. Self-hosted compiler.
Compiler usage Compiler can be used in several ways: ,[object Object]
Interactive interpreter.Usually called REPL(Read-Evaluate-Print Loop). ,[object Object],Instance of compiler class, either batch or interactive.
Demo Compiler usage
Compiler architecture Compiles Scala directly into Java bytecode. Compilation consists of several phases. Each phases transforms the syntax tree. Compiler is developed in entirely modular way. Designed to be completely re-entrant. Can be instantiated as any other class. Usage of advanced Scala language constructs.
Compiler plugins Provide way to easily extend compiler. Without modifying its source code. Can be inserted in all phases of compilation. Allows code transformations, analysis, etc. Used for some experimental language constructs. Continuations, etc.
Demo Compiler plugins
Scala tools and frameworks Basis of the Scala ecosystem.
simple-build-tool Simple but powerful build tool for Scala. Configuration is written in Scala. Provides interactive and batch mode. Dependency management support. Based on Apache Ivy dependency manager. Support for other Scala tools. Many customizations and extensions exists.
Demo simple-build-tool usage
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.
Demo specs usage
Lift web framework Expressive and elegant web framework. Benefiting from Scala language features. Embraces View-First approach to MVC. View-Driven Development paradigm. Importance of scalability and security. Without loss of performance or maintainability. Native support for Ajax a Comet.
Demo Lift usage
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.
Many more tools and librariesdo exists. New ones are coming up to Scala ecosystem every day..
Collaborative Scaladoc Newest addition to Scala ecosystem.
Project overview Developmentof Scala project documentation.  Using the concepts of social collaboration. Contribute without digging into source code. Try to embrace new approach of source-code documentation authoring.
Scaladoc Analogy of Javadoc for Scala. Second generation of Scaladoc is a part of Scala 2.8. Contains new sleek and modern interface. Provides improved comment syntax. Supports wiki-like syntax in the source comments.
Colladoc application 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 application Allows to merge changes into the source-code. Simple command-line utility. More features planned for the future. Not yet officially released. Reimplementation of scaladoc-merge tool.
Demo Colladoc and Mergedoc usage
Project status The idea already prooved to be viable. Comments are being propagated to standard library. Project needs more popularisation. There are many ideas waiting to be implemented. Most them originated in the community.
We need you! Project is looking for collaborators.

Más contenido relacionado

La actualidad más candente

Programming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyProgramming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyjljumpertz
 
Jf12 lambdas injava8-1
Jf12 lambdas injava8-1Jf12 lambdas injava8-1
Jf12 lambdas injava8-1langer4711
 
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
 
.NET Core, ASP.NET Core Course, Session 3
.NET Core, ASP.NET Core Course, Session 3.NET Core, ASP.NET Core Course, Session 3
.NET Core, ASP.NET Core Course, Session 3aminmesbahi
 
Building Scalable Applications with Laravel
Building Scalable Applications with LaravelBuilding Scalable Applications with Laravel
Building Scalable Applications with LaravelMuhammad Shakeel
 
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)ssuser337865
 
Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overviewRazvan Cojocaru
 
Java se 8 new features
Java se 8 new featuresJava se 8 new features
Java se 8 new featuresAymen Masri
 
VS Saturday 2019 - Xamarin.Forms 4.x
VS Saturday 2019 - Xamarin.Forms 4.xVS Saturday 2019 - Xamarin.Forms 4.x
VS Saturday 2019 - Xamarin.Forms 4.xMarco Bortolin
 
INTRODUCTION TO JAVA APPLICATION
INTRODUCTION TO JAVA APPLICATIONINTRODUCTION TO JAVA APPLICATION
INTRODUCTION TO JAVA APPLICATIONAjit Yadav
 
1 2 java development
1 2 java development1 2 java development
1 2 java developmentKen Kretsch
 

La actualidad más candente (18)

Programming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyProgramming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge story
 
Jf12 lambdas injava8-1
Jf12 lambdas injava8-1Jf12 lambdas injava8-1
Jf12 lambdas injava8-1
 
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
 
Java 8 concurrency abstractions
Java 8 concurrency abstractionsJava 8 concurrency abstractions
Java 8 concurrency abstractions
 
.NET Core, ASP.NET Core Course, Session 3
.NET Core, ASP.NET Core Course, Session 3.NET Core, ASP.NET Core Course, Session 3
.NET Core, ASP.NET Core Course, Session 3
 
History of java'
History of java'History of java'
History of java'
 
Building Scalable Applications with Laravel
Building Scalable Applications with LaravelBuilding Scalable Applications with Laravel
Building Scalable Applications with Laravel
 
Java. converted (2)
Java. converted (2)Java. converted (2)
Java. converted (2)
 
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
 
Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overview
 
Introducing LINQ
Introducing LINQIntroducing LINQ
Introducing LINQ
 
Java se 8 new features
Java se 8 new featuresJava se 8 new features
Java se 8 new features
 
Spring presentation
Spring presentationSpring presentation
Spring presentation
 
Introduction to .Net
Introduction to .NetIntroduction to .Net
Introduction to .Net
 
VS Saturday 2019 - Xamarin.Forms 4.x
VS Saturday 2019 - Xamarin.Forms 4.xVS Saturday 2019 - Xamarin.Forms 4.x
VS Saturday 2019 - Xamarin.Forms 4.x
 
INTRODUCTION TO JAVA APPLICATION
INTRODUCTION TO JAVA APPLICATIONINTRODUCTION TO JAVA APPLICATION
INTRODUCTION TO JAVA APPLICATION
 
1 2 java development
1 2 java development1 2 java development
1 2 java development
 
Java programming course for beginners
Java programming course for beginnersJava programming course for beginners
Java programming course for beginners
 

Destacado

Rapid RIA Development Using .NET Technologies
Rapid RIA Development Using .NET TechnologiesRapid RIA Development Using .NET Technologies
Rapid RIA Development Using .NET TechnologiesPetr Hošek
 
Sokotra
SokotraSokotra
Sokotraasdf
 
Lift web framework and Scala programming language talk
Lift web framework and Scala programming language talkLift web framework and Scala programming language talk
Lift web framework and Scala programming language talkclive boulton
 
To Tweet Or Not To Tweet (or why Live Oak Pharmacy uses social media)
To Tweet Or Not To Tweet (or why Live Oak Pharmacy uses social media)To Tweet Or Not To Tweet (or why Live Oak Pharmacy uses social media)
To Tweet Or Not To Tweet (or why Live Oak Pharmacy uses social media)LiveOakRx
 

Destacado (7)

Scala
ScalaScala
Scala
 
Home
HomeHome
Home
 
Rapid RIA Development Using .NET Technologies
Rapid RIA Development Using .NET TechnologiesRapid RIA Development Using .NET Technologies
Rapid RIA Development Using .NET Technologies
 
Sokotra
SokotraSokotra
Sokotra
 
My Skills
My SkillsMy Skills
My Skills
 
Lift web framework and Scala programming language talk
Lift web framework and Scala programming language talkLift web framework and Scala programming language talk
Lift web framework and Scala programming language talk
 
To Tweet Or Not To Tweet (or why Live Oak Pharmacy uses social media)
To Tweet Or Not To Tweet (or why Live Oak Pharmacy uses social media)To Tweet Or Not To Tweet (or why Live Oak Pharmacy uses social media)
To Tweet Or Not To Tweet (or why Live Oak Pharmacy uses social media)
 

Similar a 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
 
Assist software awesome scala
Assist software   awesome scalaAssist software   awesome scala
Assist software awesome scalaAssistSoftware
 
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
 
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
 
Scala Overview INFX 1616
Scala Overview INFX 1616Scala Overview INFX 1616
Scala Overview INFX 1616Patrick Walter
 
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
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
Java Lecture 1
Java Lecture 1Java Lecture 1
Java Lecture 1Qualys
 
Scala: a Cross-Platform Language
Scala: a Cross-Platform LanguageScala: a Cross-Platform Language
Scala: a Cross-Platform LanguageGianluca Aguzzi
 
Selling Scala to your boss
Selling Scala to your bossSelling Scala to your boss
Selling Scala to your bossJoão Bernardino
 
A Tour Of Scala
A Tour Of ScalaA Tour Of Scala
A Tour Of Scalafanf42
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bagJamie Coleman
 
Jasper report dependencies [by sc]
Jasper report dependencies [by sc]Jasper report dependencies [by sc]
Jasper report dependencies [by sc]santi caltabiano
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIArnaud Tournier
 
JaCIL_ a CLI to JVM Compiler
JaCIL_ a CLI to JVM CompilerJaCIL_ a CLI to JVM Compiler
JaCIL_ a CLI to JVM CompilerAlmann Goo
 

Similar a 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...
 
Assist software awesome scala
Assist software   awesome scalaAssist software   awesome scala
Assist software awesome scala
 
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...
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
.NET RDF APIs
.NET RDF APIs.NET RDF APIs
.NET RDF APIs
 
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
 
Unit 1 notes.pdf
Unit 1 notes.pdfUnit 1 notes.pdf
Unit 1 notes.pdf
 
Scala Overview INFX 1616
Scala Overview INFX 1616Scala Overview INFX 1616
Scala Overview INFX 1616
 
Scala for n00bs by a n00b.
Scala for n00bs by a n00b.Scala for n00bs by a n00b.
Scala for n00bs by a n00b.
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
What is scala
What is scalaWhat is scala
What is scala
 
Java Lecture 1
Java Lecture 1Java Lecture 1
Java Lecture 1
 
Scala: a Cross-Platform Language
Scala: a Cross-Platform LanguageScala: a Cross-Platform Language
Scala: a Cross-Platform Language
 
Selling Scala to your boss
Selling Scala to your bossSelling Scala to your boss
Selling Scala to your boss
 
A Tour Of Scala
A Tour Of ScalaA Tour Of Scala
A Tour Of Scala
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bag
 
Jasper report dependencies [by sc]
Jasper report dependencies [by sc]Jasper report dependencies [by sc]
Jasper report dependencies [by sc]
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing API
 
Ajaxworld West 08
Ajaxworld West 08Ajaxworld West 08
Ajaxworld West 08
 
JaCIL_ a CLI to JVM Compiler
JaCIL_ a CLI to JVM CompilerJaCIL_ a CLI to JVM Compiler
JaCIL_ a CLI to JVM Compiler
 

Ú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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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 Takeoffsammart93
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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
 
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...Martijn de Jong
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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 educationjfdjdjcjdnsjd
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
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
 
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
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 

Ú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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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...
 
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...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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?
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech 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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

Scala and its Ecosystem

  • 1. Scalaand its Ecosystem Petr Hošek @petrh CZJUG, September 2010
  • 2. What is language ecosystem?
  • 3. Tools, libraries, frameworks, community, etc. Language is useless without its ecosystem.
  • 5. With growing usage grows the need. Java ecosystem is not enough.
  • 6. Scala Compiler Most important part of the Scala ecosystem.
  • 7. Compiler overview Version 2.8 released in July. Contains many new features. Second generation of Scala compiler. Oficially named NSC (New Scala Compiler). Entirely developed in Scala itself. Self-hosted compiler.
  • 8.
  • 9.
  • 11. Compiler architecture Compiles Scala directly into Java bytecode. Compilation consists of several phases. Each phases transforms the syntax tree. Compiler is developed in entirely modular way. Designed to be completely re-entrant. Can be instantiated as any other class. Usage of advanced Scala language constructs.
  • 12. Compiler plugins Provide way to easily extend compiler. Without modifying its source code. Can be inserted in all phases of compilation. Allows code transformations, analysis, etc. Used for some experimental language constructs. Continuations, etc.
  • 14. Scala tools and frameworks Basis of the Scala ecosystem.
  • 15.
  • 16. simple-build-tool Simple but powerful build tool for Scala. Configuration is written in Scala. Provides interactive and batch mode. Dependency management support. Based on Apache Ivy dependency manager. Support for other Scala tools. Many customizations and extensions exists.
  • 18. 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.
  • 20. Lift web framework Expressive and elegant web framework. Benefiting from Scala language features. Embraces View-First approach to MVC. View-Driven Development paradigm. Importance of scalability and security. Without loss of performance or maintainability. Native support for Ajax a Comet.
  • 22.
  • 23. Many more tools and librariesdo exists. New ones are coming up to Scala ecosystem every day..
  • 24. Collaborative Scaladoc Newest addition to Scala ecosystem.
  • 25. Project overview Developmentof Scala project documentation. Using the concepts of social collaboration. Contribute without digging into source code. Try to embrace new approach of source-code documentation authoring.
  • 26. Scaladoc Analogy of Javadoc for Scala. Second generation of Scaladoc is a part of Scala 2.8. Contains new sleek and modern interface. Provides improved comment syntax. Supports wiki-like syntax in the source comments.
  • 27. Colladoc application 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.“
  • 28. Mergedoc application Allows to merge changes into the source-code. Simple command-line utility. More features planned for the future. Not yet officially released. Reimplementation of scaladoc-merge tool.
  • 29. Demo Colladoc and Mergedoc usage
  • 30. Project status The idea already prooved to be viable. Comments are being propagated to standard library. Project needs more popularisation. There are many ideas waiting to be implemented. Most them originated in the community.
  • 31. We need you! Project is looking for collaborators.
  • 32. Learn more at http://petrhosek.name/

Notas del editor

  1. Modularity is quite limited. You can have plugins, but there are no extensions to the type checker, or modifications of the parser possible without hacking the actual compiler.
  2. Many new tools appeared in last few months.Most of them replaces Java equivalents.
  3. Originally known as Scala with Sails.