Scalaand its Ecosystem<br />Petr Hošek @petrh<br />CZJUG, September 2010<br />
What is language ecosystem?<br />
Tools, libraries, frameworks, community, etc.<br />Language is useless without its ecosystem.<br />
Why Scala ecosystem?<br />
With growing usage grows the need.<br />Java ecosystem is not enough.<br />
Scala Compiler<br />Most important part of the Scala ecosystem.<br />
Compiler overview<br />Version 2.8 released in July.<br />Contains many new features.<br />Second generation of Scala comp...
Compiler usage<br />Compiler can be used in several ways:<br /><ul><li>Standalone compiler.
Interactive interpreter.</li></ul>Usually called REPL(Read-Evaluate-Print Loop).<br /><ul><li>Part of Scala application.</...
Demo<br />Compiler usage<br />
Compiler architecture<br />Compiles Scala directly into Java bytecode.<br />Compilation consists of several phases.<br />E...
Compiler plugins<br />Provide way to easily extend compiler.<br />Without modifying its source code.<br />Can be inserted ...
Demo<br />Compiler plugins<br />
Scala tools and frameworks<br />Basis of the Scala ecosystem.<br />
simple-build-tool<br />Simple but powerful build tool for Scala.<br />Configuration is written in Scala.<br />Provides int...
Demo<br />simple-build-tool usage<br />
Specs<br />Behaviour-driven design framework for Scala.<br />Simple and typed language for specifications.<br />Benefits f...
Demo<br />specs usage<br />
Lift web framework<br />Expressive and elegant web framework.<br />Benefiting from Scala language features.<br />Embraces ...
Demo<br />Lift usage<br />
Well-known Scala tools and libraries:<br /><ul><li>sbaz</li></ul>Package sharing tool.<br /><ul><li>ScalaCheck</li></ul>To...
Many more tools and librariesdo exists.<br />New ones are coming up to Scala ecosystem every day..<br />
Collaborative Scaladoc<br />Newest addition to Scala ecosystem.<br />
Project overview<br />Developmentof Scala project documentation. <br />Using the concepts of social collaboration.<br />Co...
Scaladoc<br />Analogy of Javadoc for Scala.<br />Second generation of Scaladoc is a part of Scala 2.8.<br />Contains new s...
Colladoc application<br />Allows to edit Scala symbols documentation.<br />Lift web application running the Scala compiler...
Mergedoc application<br />Allows to merge changes into the source-code.<br />Simple command-line utility.<br />More featur...
Demo<br />Colladoc and Mergedoc usage<br />
Project status<br />The idea already prooved to be viable.<br />Comments are being propagated to standard library.<br />Pr...
We need you!<br />Project is looking for collaborators.<br />
Upcoming SlideShare
Loading in …5
×

Scala and its Ecosystem

1,818 views
1,721 views

Published on

This presentation is motivated by the continuous growth of Scala language popularity thanks to many new concepts it offers. Therefore, it makes a perfect sense to take a further insight on this language. Beside the language itself, its ecosystem is also very important. That is why I will focus on the Scala ecosystem in this presentation.

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

  • Be the first to like this

No Downloads
Views
Total views
1,818
On SlideShare
0
From Embeds
0
Number of Embeds
21
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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.
  • Many new tools appeared in last few months.Most of them replaces Java equivalents.
  • Originally known as Scala with Sails.
  • Scala and its Ecosystem

    1. 1. Scalaand its Ecosystem<br />Petr Hošek @petrh<br />CZJUG, September 2010<br />
    2. 2. What is language ecosystem?<br />
    3. 3. Tools, libraries, frameworks, community, etc.<br />Language is useless without its ecosystem.<br />
    4. 4. Why Scala ecosystem?<br />
    5. 5. With growing usage grows the need.<br />Java ecosystem is not enough.<br />
    6. 6. Scala Compiler<br />Most important part of the Scala ecosystem.<br />
    7. 7. Compiler overview<br />Version 2.8 released in July.<br />Contains many new features.<br />Second generation of Scala compiler.<br />Oficially named NSC (New Scala Compiler).<br />Entirely developed in Scala itself.<br />Self-hosted compiler.<br />
    8. 8. Compiler usage<br />Compiler can be used in several ways:<br /><ul><li>Standalone compiler.
    9. 9. Interactive interpreter.</li></ul>Usually called REPL(Read-Evaluate-Print Loop).<br /><ul><li>Part of Scala application.</li></ul>Instance of compiler class, either batch or interactive.<br />
    10. 10. Demo<br />Compiler usage<br />
    11. 11. Compiler architecture<br />Compiles Scala directly into Java bytecode.<br />Compilation consists of several phases.<br />Each phases transforms the syntax tree.<br />Compiler is developed in entirely modular way.<br />Designed to be completely re-entrant.<br />Can be instantiated as any other class.<br />Usage of advanced Scala language constructs.<br />
    12. 12. Compiler plugins<br />Provide way to easily extend compiler.<br />Without modifying its source code.<br />Can be inserted in all phases of compilation.<br />Allows code transformations, analysis, etc.<br />Used for some experimental language constructs.<br />Continuations, etc.<br />
    13. 13. Demo<br />Compiler plugins<br />
    14. 14. Scala tools and frameworks<br />Basis of the Scala ecosystem.<br />
    15. 15.
    16. 16. simple-build-tool<br />Simple but powerful build tool for Scala.<br />Configuration is written in Scala.<br />Provides interactive and batch mode.<br />Dependency management support.<br />Based on Apache Ivy dependency manager.<br />Support for other Scala tools.<br />Many customizations and extensions exists.<br />
    17. 17. Demo<br />simple-build-tool usage<br />
    18. 18. Specs<br />Behaviour-driven design framework for Scala.<br />Simple and typed language for specifications.<br />Benefits from Scala expressive syntax.<br />Integration with testing tools and frameworks.<br />JUnit, ScalaCheck, Mockito, etc.<br />
    19. 19. Demo<br />specs usage<br />
    20. 20. Lift web framework<br />Expressive and elegant web framework.<br />Benefiting from Scala language features.<br />Embraces View-First approach to MVC.<br />View-Driven Development paradigm.<br />Importance of scalability and security.<br />Without loss of performance or maintainability.<br />Native support for Ajax a Comet.<br />
    21. 21. Demo<br />Lift usage<br />
    22. 22. Well-known Scala tools and libraries:<br /><ul><li>sbaz</li></ul>Package sharing tool.<br /><ul><li>ScalaCheck</li></ul>Tool for automatic test case generation.<br /><ul><li>Akka framework</li></ul>Concurrent, scalable applications development.<br /><ul><li>Configgy</li></ul>Library for handling configuration and logging.<br /><ul><li>scalaz, scalax</li></ul>Extensions to the standard Scala library.<br />
    23. 23. Many more tools and librariesdo exists.<br />New ones are coming up to Scala ecosystem every day..<br />
    24. 24. Collaborative Scaladoc<br />Newest addition to Scala ecosystem.<br />
    25. 25. Project overview<br />Developmentof Scala project documentation. <br />Using the concepts of social collaboration.<br />Contribute without digging into source code.<br />Try to embrace new approach of source-code documentation authoring.<br />
    26. 26. Scaladoc<br />Analogy of Javadoc for Scala.<br />Second generation of Scaladoc is a part of Scala 2.8.<br />Contains new sleek and modern interface.<br />Provides improved comment syntax.<br />Supports wiki-like syntax in the source comments.<br />
    27. 27. Colladoc application<br />Allows to edit Scala symbols documentation.<br />Lift web application running the Scala compiler.<br />Developed as a Google SoC 2010 project.<br />Now being developed as open-source project.<br />Based heavily upon Scaladoc 2 functionality.<br />„Do not reinvent the wheel.“<br />
    28. 28. Mergedoc application<br />Allows to merge changes into the source-code.<br />Simple command-line utility.<br />More features planned for the future.<br />Not yet officially released.<br />Reimplementation of scaladoc-merge tool.<br />
    29. 29. Demo<br />Colladoc and Mergedoc usage<br />
    30. 30. Project status<br />The idea already prooved to be viable.<br />Comments are being propagated to standard library.<br />Project needs more popularisation.<br />There are many ideas waiting to be implemented.<br />Most them originated in the community.<br />
    31. 31. We need you!<br />Project is looking for collaborators.<br />
    32. 32. Learn more at<br />http://petrhosek.name/<br />

    ×