Scala and its Ecosystem


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
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
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 /><br />