(a more actively curated list of Scala libraries is: Awesome Scala)
What follows is an unofficial, community-maintained overview of third-party open source libraries written in Scala.
- Some standard library modules are also listed.
- Don't forget Scala has access to all Java libraries too.
Everyone is invited to add information here!
(Need an account to edit this page? You can use your Jira account. If you haven't one, go register, then come back.)
Development Tools
IDEs
Name | Description |
|---|---|
Eclipse plugin | |
IntelliJ plugin | |
Amalgamation to form a reasonable development environment for Scala on Emacs | |
Scala, Emacs and Yasnippet | |
ENhanced Scala Interaction Mode for Emacs. Provides features such as live error-checking, symbol inspection, package/type browsing, one-click access to online documentation, basic refactorings, and more. | |
Netbeans Plugin |
Build Tools
Name | Description |
|---|---|
A build tool for Scala | |
Is a Ruby-based build tool with a Scala plugin | |
Is a Groovy-based build tool with a Scala plugin | |
Is a build tool with a Scala plugin | |
| SBuild | A Scala-based build tool for Scala, Java and almost any other build job. Also with Eclipse Integration, Ant Task integration and Jenkins support. |
SBT (Simple Build Tool) plugins
Name | Description |
|---|---|
| Plugins for IDEs: | |
A plugin/processor to create IntelliJ IDEA project files | |
| Packaging plugins | |
| sbt-native-packager | Build native packages for major operation systems |
| sbt-appbundle | Create Mac OS X application bundles |
| android-plugin | Create android mobile device applications (apk) in Scala using sbt |
| Code generator plugins: | |
| sbt-scalabuff | Generate case classes and support for serialization from Google Protocol Buffer definitions using ScalaBuff |
Lifty adds scaffolding to sbt and includes templates for Lift including new projects, adding snippets, models, comet actors, and other templates for Lift-base projects. | |
| scalaxb | XSD and WSDL binding |
| sbt-protobuf | Plugin for compiling protobuf files |
| sbt-cppp | Sbt plugin to support Protocol Buffers, especially in multi-project builds. |
| xsbt-reflect | Reflect build properties into source code |
| sbt-fmpp | Generate scala/java boilerplate code using FreeMarker template. |
| Utility plugins: | |
CXF integration for SBT | |
| ls-sbt | sbt interface for ls.implicit.ly |
| sbt-dependency-graph | Creates a graphml file of the dependency tree |
| sbt-inspectr | Displays settings dependency tree (for calling inspect recursively) |
| sbt-revolver | Starting and stopping, triggered restart, hot reloading |
| sbt-scala-js-map | A Sbt plugin that configures source mapping for Scala.js projects hosted on Github |
| Documentation plugins: | |
| sbt-lwm | SBT 0.10.x plugin that converts lightweight markup documents to HTML. It currently supports Textile and Markdown |
| sbt-api-mappings | A Sbt plugin that resolves external API links to common Scala libraries |
| Test framework integration: | |
| junit-interface | Test interface implementation for JUnit 4 |
Miscellaneous
Name | Description |
|---|---|
IDE-agnostic automated refactoring tools for Scala | |
Scala source code formatter | |
Installs and updates Scala software | |
Eclipse plugin that facilitates Scala on Android using ADT and Eclipse | |
A lightweight GUI wrapper around "scala" - the interpreter shell for Scala | |
A Graphical Scala REPL/Interpreter (outdated: stuck at Scala 2.7) | |
Text editor with built-in support for SBT and Scala REPL | |
| ScalaInterpreterPane | Swing component for Scala syntax highlight and inerpreter/REPL execution |
| zsh completions | Support for completion of Scala command-line tool arguments in zsh |
| classgenerator | A class builder which helps create proxies |
Quality Assurance
Testing
Name | Description |
|---|---|
Mocking of objects and functions (formely Borachio) | |
A powerful tool for automatic unit testing | |
Open-source test framework for the Java Platform designed to increase your productivity by letting you write fewer lines of test code that more clearly reveal your intent | |
A library for writing executable software specifications (superseding the original specs library, you should use that one if you start a new project) | |
A BDD library for Scala |
Documentation
Name | Description |
|---|---|
Specs tests for the Scala collections library | |
Collaborative Scaladoc should ease the contribution of Scala documentation by leveraging the means of social collaboration |
Miscellaneous
Quality assurance fuzzer for the Scala compiler | |
| sniff | Generate "bad code smells" Specs2 specifications |
| Scalastyle | Examines code and indicates potential problems with it |
Utilities
General Purpose
Name | Description |
|---|---|
An extension to the core Scala library, including type classes and pure functional data structures | |
| Each | A macro library that converts native imperative syntax to scalaz's monadic expressions |
| enableIf.scala | A library that switches Scala code at compile-time, like #if in C/C++. |
A general-purpose library of stuff for Scala | |
Small collection of various Scala stuff. | |
| shapeless | shapeless is an exploration of generic programming in Scala |
| ScalaScriptEngine | Embed this library into a program to dynamically compile and reload scala classes |
Logging
Name | Description |
|---|---|
| zero-log | Fast logging with simple configuration for Scala |
Simple config and logging setup for Scala | |
Simple Scala facade for SLF4J | |
A Scala-friendly SLF4J Wrapper | |
A very simple logger | |
A Scala library which provides a sane log output format and an easy-to-use mixin for adding logging to your code | |
| loglady | A thin scala wrapper around SLF4J |
| powerscala | A very fast and easily configured (programatically) logging framework. |
Command Line Parsers
Name | Description |
|---|---|
A command-line parser for Scala | |
Convenient command line parsing for Scala | |
Simple scala command line options parsing | |
Class to define and parse parameters for a command-line and return merged results | |
Provides simple command line parsing for Scala that only requires a minimal amount of code | |
| CmdOption | An annotation based command line parser toolkit for Scala/Java, also supporting command based command lines like e.g. git |
| CLIApp | Scala commandline parser utilizing the Params library for smooth parameter definitions. Blog post description here. |
Benchmarking
Name | Description |
|---|---|
Performance Testing framework aimed at automagically comparing performance tests and working inside Simple Build Tool | |
SBT template project for creating Scala (micro-)benchmarks based on Caliper | |
Capturing JVM- and application-level metrics. So you know what's going on |
Software Design
Name | Description |
|---|---|
A lightweight Inversion of Control container | |
Rule engine and DSL | |
Effects-tracking compiler plugin | |
A mix of service locator and dependency injection patterns | |
| Scaladi | Scala dependency injection library |
Scala extensions for Google Guice | |
DSL for OSGi development in Scala | |
| scaloid | Utility library designed to reduce boilerplate code and otherwise simplify development for the Android mobile framework |
| Domino | A intuitive and powerful DSL to interact with OSGi containers and the OSGi service registry |
Miscellaneous
Name | Description |
|---|---|
| Schale | Subprocess manager, allowing interactive IO and manipulation of process environment |
| commons-continuations | Utilities for Scala continuations |
A Scala-friendly, fast class-finder library (with extras) | |
A library for converting between Java and Scala collections | |
Scala traits that override toString to display parameter labels | |
This project will apply specializations to various parts of the standard library, starting from the Numeric trait | |
A Scala plugin providing string templates (Scala expressions inside strings, aka string interpolation) | |
A Scala wrapper for Joda Time (unmaintained) | |
| nscala-time | Fork of scala-time |
A native Scala library for date, time and calendar related work | |
| Configrity | Simple, immutable and flexible configuration API for scala |
| Bee Config | A simple, immutable and flexible configuration API for scala based on loading files as ListMaps |
| scalaxal | an extensible Address Language (xAL) library |
| scalakml | a KML 2.2 scala library |
| a Scala/Akka client for connecting to the gpsd daemon | |
| ScalaPSL | a Scala library for the Public Suffix List |
| ScalaCZML | a Cesium CZML scala library |
Algorithms and Data Structures
| Name | Description |
|---|---|
| FingerTree | Versatile building block for various immutable data structures |
Asynchronous Programming
| Name | Description |
|---|---|
| Stateless Future | Asynchronous programming in fully featured Scala syntax |
I/O
Serialization
JSON
Name | Description |
|---|---|
| Argonaut | Purely Functional JSON in Scala |
| Fig | A small Scala library for using JSON-based configuration files |
JSON serialization/deserialization using a nice Scala wrapper around Jackson | |
JSON toolkit: parser, DSL, queries (XPath style, LINQ style), serialization, diff, merge, etc | |
| powerscala | A very fast and simple to extend case class <-> JSON serializer / deserializer. |
A lightweight, clean and simple JSON implementation in Scala | |
| sjson | JSON serialization for Scala objects |
Scala JSON toolkit. Originally from the Odersky "Stairway" Book, tightened up and tests added by Twitter, Inc. |
XML
Name | Description |
|---|---|
The scala.xml library has some very annoying issues. Time for a clean-room replacement! | |
An alternative library for XML usage in Scala | |
An XML data binding tool for Scala |
Binary Data
Name | Description |
|---|---|
Library for describing binary formats for Scala types |
Messaging
Name | Description |
|---|---|
A distributed publish/subscribe messaging service | |
| ScalaOSC | A library for OpenSoundControl (OSC), a message protocol used in multi-media applications |
Miscellaneous
Name | Description |
|---|---|
This project aims to be the Scala Incubator project for Automatic-Resource-Management in the Scala library | |
Repository for work on Scala Standard Library I/O components | |
A framework for making JPA easier to use with Scala code | |
| scala-ssh | Remote shell access via SSH for your Scala applications |
| jassh | High level scala SSH API for easy and fast operations on remote servers. |
| jajmx | Scala JMX API : the goal is to simplify jmx operations on remote JVM |
| scala-junction | An utility that creates NTFS junction points on Windows for Scala or Java. |
Data Storage
RDBMS
Name | Description |
|---|---|
| Quill | Compile-time Language Integrated Query library for Scala |
| SLICK (Scala Language-Integrated Connection Kit) | Modern database query and access library for Scala. Supersedes ScalaQuery. |
| Circumflex ORM | Very rich, flexible database query API and ORM. |
A type-safe database query API for Scala | |
| Prequel | Because sometimes SQL is enough |
An agreeable way to talk to your database | |
| O/R Broker | JDBC library for Scala |
| sqlτyped | Convert SQL string literals to typed functions at compile time. |
| ScalaRelational | Type-Safe framework for defining, modifying, and querying SQL databases |
ORM
Name | Description |
|---|---|
A Scala DSL and ORM for talking with databases with minimum verbosity and maximum type safety | |
A plugable object persistence, supporting both ORM and NoSQL, plus STM. | |
ORM library that encourages clean domain model, type safe and with query DSL that resembles select statements. | |
| SORM | A pure case-classes oriented ORM framework for Scala |
NoSQL
Name | Description |
|---|---|
| Quill | Compile-time Language Integrated Query library with Cassandra support |
| Memcontinuationed | Memcached client for Scala |
| Sandra | An Apache Cassandra Toolkit |
CouchDB driver and View Server in Scala | |
Scala client for Redis | |
Officially supported Scala Driver for MongoDB | |
A framework for creating distributed datastores | |
Fast bi-directional Scala case class to MongoDB mapping library | |
A Lift/MongoDB query DSL | |
Pure asynchronous MongoDB Driver for Scala | |
| Subset | Library to ease serializing/deserializing MongoDB documents and constructing queries |
Graph
A distributed, fault-tolerant graph database | |
Scala implementation of RESTful JSON HTTP resources on top of the Neo4j graph | |
Scala wrapper for Neo4j Spatial Extension | |
| Neo4j Scala | Scala wrapper for Neo4j |
Utilities
Name | Description |
|---|---|
A cross-platform, cross-database SQL command tool | |
Database migrations written in Scala |
Web
Clients
Name | Description |
|---|---|
| Bee Client | A lightweight Scala wrapper for HttpURLConnection - lightweight and thread-safe |
Scala library for accessing HTTP services | |
| Netcaty | Easy to use net client and server, based on Netty, convenient in tests |
| Newman | HTTP client specifically for Scala |
Actor-based memcache client library | |
Easy access to Google Data API | |
A ZooKeeper client library in Scala | |
| spray-can | A low-overhead, high-performance, fully asynchronous HTTP 1.1 client (and server) implemented entirely in Scala on top of Akka |
A higher-level API layer on top of the spray-can HttpClient, supports connection pooling, custom type (un)marshalling and HTTP pipelining | |
An AtomPub client with some smarts | |
| SJersey-Client | A Scala wrapper for Jerseys REST Client implementation |
Servers
Name | Description |
|---|---|
| Hyperscala | A bare-metal implementation of HTML, CSS, and JavaScript in Scala that also provides a server infrastructure built on Netty. |
| Netcaty | Easy to use net client and server, based on Netty, convenient in tests |
A low-overhead, high-performance, fully asynchronous HTTP 1.1 server (and client) implemented entirely in Scala on top of Akka | |
| tiscaf | A light and fast HTTP server without external dependencies written in and intended to be used with Scala |
| Xitrum | Async and clustered Scala web framework and HTTP(S) server on top of Netty, Akka, and Hazelcast |
Frameworks
Name | Description |
|---|---|
| BlueEyes | A lightweight Web 3.0 framework for Scala, featuring a purely asynchronous architecture, extremely high-performance, massive scalability, high usability, and a functional, composable design |
| Bowler | A RESTful, Multi-Channel ready Scala Web Framework with a functional flavor |
Lightweight Scala-based Web application framework and ORM | |
| Finagle | A fault tolerant, protocol-agnostic network client and server |
| Hyperscala | A bare-metal implementation of HTML, CSS, and JavaScript in Scala that also provides a server infrastructure built on Netty. |
The Lift Web framework for Scala | |
| Ostrich | Stats collector & reporter for scala servers |
| Pinky | Scala REST/MVC glue web framework built on top of Guice and Guice Servlet. Pinky provides out-of-the-box support for dealing with forms, domain objects, JDBC and RSS/XML/Json/HTML content types |
Play Web framework for Scala | |
Tiny Scala Web framework, inspired by Sinatra | |
Scala template engine: like JSP but without the crap and with added Scala coolness | |
| SJersey | SJersey is a set of classes which add Scala interoperation to Jersey (up to 2.5.1). It is intended to be a replacement for jersey-scala. |
An embedded Scala web server powered by Netty networking and Akka processing | |
A Scala framework for building RESTful web services on top of Akka: lightweight, asynchronous, non-blocking, actor-based, testable | |
A Scala framework for building dynamic Web applications | |
A toolkit for servicing HTTP requests in Scala | |
Vaadin is a Java/GWT Web application framework for Rich Internet Applications (RIA) with support for Scala | |
Async and clustered Scala web framework and HTTP(S) server on top of Netty, Akka, and Hazelcast |
Semantic
Name | Description |
|---|---|
Smart Data Tools for the Semantic Web | |
SPARQL endpoint over the Direct Graph derived from a particular Relational Database |
Desktop
Swing
| Name | Description |
|---|---|
| ScalaSwingContrib | This missing bits for Scala-Swing, e.g. Tree, GroupPanel, PopupMenu, ColorChooser |
Java FX
| Name | Description |
|---|---|
| ScalaFX | DSL and bindings to JavaFX2 |
Functional reactive programming
Name | Description |
|---|---|
| Binding.scala | Reactive data-binding for Scala. It also can be used as a reactive web framework. |
| scala-react | Advanced FRP library based on delimited continuations, there is a paper with Odersky on it |
| reactive | Simple general-utility FRP kit, with bindings for Lift |
| dire | Discrete FRP library, inspired by both scala-react and reactive, backed up by scalaz |
| SynapseGrid | An FRP framework for constructing reactive real-time immutable data flow systems. It is independent from Odersky's paper and has a couple of fresh ideas. |
Event Sourcing
Libraries
Name | Description |
|---|---|
An event-sourcing library for Akka Please note that as of Akka 2.3.0 an improved version of this library is included as Akka Persistence. |
Parallelism and Distribution
Actors
Name | Description |
|---|---|
Toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on the JVM Community extensions / add-ons for Akka can be found here. | |
Fast actors using replies without future, actor-based functional programming with keyed sequences, and an versioned graphical database |
Software Transactional Memory
Name | Description |
|---|---|
Turns the Java heap into a transactional data set with begin/commit/rollback semantics Please note that this part of Akka has been deprecated in 2.3.0 and will be removed in 2.4.0. | |
Software transactional memory | |
Timestamp based Software Transaction Memory | |
Manchester University Transactions for Scala (STM, supports legacy code) | |
| LucreSTM | STM layer on top of Scala-STM, adding optional durability and persistence |
Parallel Computing
Name | Description |
|---|---|
[Standard Library] Collections that utilize multi-core CPUs for common operations | |
Framework for parallel processing, well-suited to iterative and graph-based tasks. Similar in some aspects to Google's Pregel. (Experimental distributed version available within "distributed" branch of github repo) | |
| Scalding | A library for specifying Hadoop jobs |
| Summingbird | a library that lets you write MapReduce programs that look like native Scala or Java collection transformations, executes on Scalding and Storm |
| synapse-grid-concurrent | Part of SynapseGrid (FRP framework) that allows parallel execution of independent branches. Branches that depend on the same state are executed sequentially. The result is guaranteed to be the same as in the single-threaded case. |
Distributed Computing
Name | Description |
|---|---|
Collections that can be stored across many machines | |
Cluster manager and networking layer built on top of ZooKeeper | |
High Performance Cloud Computing, Community Edition | |
Framework for parallel processing, well-suited to iterative and graph-based tasks. Similar in some aspects to Google's Pregel. (Experimental distributed version available within "distributed" branch of github repo) |
Concurrency
Name | Description |
|---|---|
Tiny queue system based on starling, in scala | |
| scalaconcurrency | A wrapper around java.concurrent package that allows usage of executors, locks in a more scala-ish way |
Language and Text Processing
Parsing
Name | Description |
|---|---|
[Standard Library] Parser combinators | |
A parser combinator library based on the GLL algorithm | |
| Parboiled2 | A macro-based PEG parser generator for Scala 2.10+, successor of parboiled - fast, powerful, light-weight, proper error reporting |
Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful | |
A Scala port of the Parsec parser combinator library | |
An iteratee-based parser combinator library for Scala supporting hierarchical error messages, error recovery and multiple error accumulation, nonbacktracking choice, streaming parsing, and other useful features | |
A Visual Parser-Generator | |
| Scala xgettext | Compiler plugin that acts like GNU xgettext command to extract i18n strings in Scala source code files to Gettext .po file |
| Scaposer | GNU Gettext .po file loader |
String Formatting and Template Engine
Name | Description |
|---|---|
Extremely fast string formatting |
Other
Name | Description |
|---|---|
Regular expressions DSL | |
A Scala library for language processing | |
Generic Architecture for Proofs; data types, algorithms, parsers, transformations and other components common in proof theory in general and mechanized proof theory in particular. | |
A Scala interface to the Java StringTemplate library | |
Unified Scala wrapper API for various lightweight markup APIs | |
| Pamflet | Publishing application for short texts, particularly user documentation |
Multimedia
Graphics
Name | Description |
|---|---|
Scala 3D engine with modular architecture | |
Scala engine for high performance interactive 3D applications | |
Programmatic Technical Drawing in Scala | |
Yet another Game engine (in Scala) | |
A framework to optimize ABC, SWC and SWF files | |
| SPDE | Scala library based on the Processing multimedia language |
Audio and Music
Name | Description |
|---|---|
| ScalaAudioFile | A library to read and write uncompressed audio files (AIFF, WAVE, etc.) |
| ScalaCollider | A sound synthesis library for the SuperCollider server |
| ScalaMIDI | A library for accessing standard MIDI files |
Scientific and Numerical Computing
Mathematics
Name | Description |
|---|---|
| Spire | Powerful new number types and numeric abstractions (complex, rational, real, interval etc. |
| Saddle | A data manipulation library that provides array-backed, indexed, one- and two-dimensional data structures |
A MATLAB-like, easy to use, scientific programming environment. Can exploit many scientific libraries, has extensive ploting support, is expandable, configurable and much more. | |
High performance numeric linear algebra library for Scala, superseded by Breeze | |
Probabilistic programming with imperatively-defined factor graphs | |
| algebird | Abstract algebra for large-scale analytics |
Scala algebra system | |
SAT solver and algebraic functions | |
Graph representation and algorithms. |
GPU computation
Name | Description |
|---|---|
Faster Scala: optimizing compiler plugin + GPU-backed collections (OpenCL) |
Other
Name | Description |
|---|---|
Run-time enforcement of numeric units (distance, weight, etc.) | |
Useful routines for natural language processing (NLP) and machine learning | |
| Chalk | A library for natural language processing (subproject of Breeze) |
An open source VHDL compiler/simulator | |
JVM Library for G-Node data store | |
| jaseries | API for time numeric series operations |
Education
Name | Description |
|---|---|
The Kojo Learning Environment | |
A simple markup language for creating flashcards |
