Please note that the Scala wikis are in a state of flux. We strongly encourage you to add content but avoid creating permanent links. URLs will frequently change. For our long-term plans see this post by the doc czar.
Skip to end of metadata
Go to start of metadata
  • This 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

Scala IDE for Eclipse

Eclipse plugin

Scala Plugin for IntelliJ IDEA

IntelliJ plugin

Scamacs

Amalgamation to form a reasonable development environment for Scala on Emacs

Scala Emacs Plugin

Scala, Emacs and Yasnippet

ENSIME

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 for Scala

Netbeans Plugin

Build Tools

Name

Description

SBT

A build tool for Scala

Apache Buildr

Is a Ruby-based build tool with a Scala plugin

Gradle

Is a Groovy-based build tool with a Scala plugin

Maven + maven-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:

sbt-idea

A plugin/processor to create IntelliJ IDEA project files

 Packaging plugins
sbt-native-packagerBuild native packages for major operation systems
sbt-appbundleCreate Mac OS X application bundles
android-pluginCreate android mobile device applications (apk) in Scala using sbt
 Code generator plugins:
sbt-scalabuffGenerate case classes and support for serialization from Google Protocol Buffer definitions using ScalaBuff

lifty

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.

scalaxbXSD and WSDL binding
sbt-protobufPlugin for compiling protobuf files
xsbt-reflectReflect build properties into source code
sbt-fmpp

Generate scala/java boilerplate code using FreeMarker template.

 Utility plugins:

sbt-cxf

CXF integration for SBT

ls-sbtsbt interface for ls.implicit.ly
sbt-dependency-graphCreates a graphml file of the dependency tree
sbt-inspectrDisplays settings dependency tree (for calling inspect recursively)
sbt-revolverStarting and stopping, triggered restart, hot reloading
 Documentation plugins:
sbt-lwmSBT 0.10.x plugin that converts lightweight markup documents to HTML. It currently supports Textile and Markdown
 Test framework integration:
junit-interfaceTest interface implementation for JUnit 4

Miscellaneous

Name

Description

Scala Refactoring

IDE-agnostic automated refactoring tools for Scala

Scalariform

Scala source code formatter

Conscript

Installs and updates Scala software

Treeshaker

Eclipse plugin that facilitates Scala on Android using ADT and Eclipse

ScalaConsole

A lightweight GUI wrapper around "scala" - the interpreter shell for Scala

Scalide

A Graphical Scala REPL/Interpreter (outdated: stuck at Scala 2.7)

ScalaEdit

Text editor with built-in support for SBT and Scala REPL

ScalaInterpreterPaneSwing component for Scala syntax highlight and inerpreter/REPL execution
zsh completionsSupport for completion of Scala command-line tool arguments in zsh
classgeneratorA class builder which helps create proxies

Quality Assurance

Testing

Name

Description

ScalaMock

Mocking of objects and functions (formely Borachio)

ScalaCheck

A powerful tool for automatic unit testing

ScalaTest

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

Specs2

A library for writing executable software specifications (superseding the original specs library, you should use that one if you start a new project)

Specs

A BDD library for Scala

Documentation

Name

Description

scala-collection-test

Specs tests for the Scala collections library

Colladoc

Collaborative Scaladoc should ease the contribution of Scala documentation by leveraging the means of social collaboration

Miscellaneous

Qualac

Quality assurance fuzzer for the Scala compiler

sniffGenerate "bad code smells" Specs2 specifications
ScalastyleExamines code and indicates potential problems with it

Utilities

General Purpose

Name

Description

scalaz

An extension to the core Scala library, including type classes and pure functional data structures

Grizzled Scala

A general-purpose library of stuff for Scala

Scuff

Small collection of various Scala stuff.

shapelessshapeless 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-logFast logging with simple configuration for Scala

Configgy

Simple config and logging setup for Scala

slf4s

Simple Scala facade for SLF4J

Grizzled SLF4J

A Scala-friendly SLF4J Wrapper

AVSL

A very simple logger

Logula

A Scala library which provides a sane log output format and an easy-to-use mixin for adding logging to your code

logladyA thin scala wrapper around SLF4J
powerscalaA very fast and easily configured (programatically) logging framework.

Command Line Parsers

Name

Description

Argot

A command-line parser for Scala

optional

Convenient command line parsing for Scala

scopt

Simple scala command line options parsing

AScalaParserClass

Class to define and parse parameters for a command-line and return merged results

OptParse

Provides simple command line parsing for Scala that only requires a minimal amount of code

CmdOptionAn annotation based command line parser toolkit for Scala/Java, also supporting command based command lines like e.g. git

Benchmarking

Name

Description

SPerformance

Performance Testing framework aimed at automagically comparing performance tests and working inside Simple Build Tool

scala-benchmarking-template

SBT template project for creating Scala (micro-)benchmarks based on Caliper

Metrics

Capturing JVM- and application-level metrics. So you know what's going on

Software Design

Name

Description

Sindi

A lightweight Inversion of Control container

Hammurabi

Rule engine and DSL

Effects

Effects-tracking compiler plugin

Subcut

A mix of service locator and dependency injection patterns

ScaladiScala dependency injection library

scala-guice

Scala extensions for Google Guice

scalamodules

DSL for OSGi development in Scala

scaloidUtility library designed to reduce boilerplate code and otherwise simplify development for the Android mobile framework
DominoA powerful DSL to interact with OSGi containers and the OSGi service registry

Miscellaneous

Name

Description

SchaleSubprocess manager, allowing interactive IO and manipulation of process environment
commons-continuationsUtilities for Scala continuations

ClassUtil

A Scala-friendly, fast class-finder library (with extras)

scalaj-collection

A library for converting between Java and Scala collections

Labeled ToString

Scala traits that override toString to display parameter labels

specialized-numeric

This project will apply specializations to various parts of the standard library, starting from the Numeric trait

Enhanced Strings

A Scala plugin providing string templates (Scala expressions inside strings, aka string interpolation)

scala-time

A Scala wrapper for Joda Time (unmaintained)

nscala-timeFork of scala-time

scala-datetime

A native Scala library for date, time and calendar related work

ConfigritySimple, immutable and flexible configuration API for scala
Bee ConfigA simple, immutable and flexible configuration API for scala based on loading files as ListMaps
scalaxalan extensible Address Language (xAL) library
scalakml

a KML 2.2 scala library

Gpsd4Scalaa Scala/Akka client for connecting to the gpsd daemon

Algorithms and Data Structures

NameDescription
FingerTreeVersatile building block for various immutable data structures

I/O

Serialization

JSON

Name

Description

sjson

JSON serialization for Scala objects

Jerkson

JSON serialization/deserialization using a nice Scala wrapper around Jackson

Lift JSON

JSON toolkit: parser, DSL, queries (XPath style, LINQ style), serialization, diff, merge, etc

spray json

A lightweight, clean and simple JSON implementation in Scala

twitter scala-json

Scala JSON toolkit. Originally from the Odersky "Stairway" Book, tightened up and tests added by Twitter, Inc.

Fig

A small Scala library for using JSON-based configuration files

powerscala

A very fast and simple to extend case class <-> JSON serializer / deserializer.

ArgonautPurely Functional JSON in Scala

XML

Name

Description

Anti-XML

The scala.xml library has some very annoying issues. Time for a clean-room replacement!

Scales

An alternative library for XML usage in Scala

scalaxb

An XML data binding tool for Scala

Binary Data

Name

Description

SBinary

Library for describing binary formats for Scala types

Messaging

Name

Description

Kafka

A distributed publish/subscribe messaging service

ScalaOSCA library for OpenSoundControl (OSC), a message protocol used in multi-media applications

Miscellaneous

Name

Description

scala-arm

This project aims to be the Scala Incubator project for Automatic-Resource-Management in the Scala library

scala-io

Repository for work on Scala Standard Library I/O components

scalajpa

A framework for making JPA easier to use with Scala code

scala-sshRemote shell access via SSH for your Scala applications
jasshHigh level scala SSH API for easy and fast operations on remote servers.
jajmxScala JMX API : the goal is to simplify jmx operations on remote JVM
scala-junctionAn utility that creates NTFS junction points on Windows for Scala or Java.

Data Storage

RDBMS

Name

Description

SLICK (Scala Language-Integrated Connection Kit)Modern database query and access library for Scala. Supersedes ScalaQuery.
Circumflex ORMVery rich, flexible database query API and ORM.

ScalaQuery

A type-safe database query API for Scala

PrequelBecause sometimes SQL is enough

Querulous

An agreeable way to talk to your database

O/R BrokerJDBC library for Scala
sqlτypedConvert SQL string literals to typed functions at compile time.

ORM

Name

Description

Squeryl

A Scala DSL and ORM for talking with databases with minimum verbosity and maximum type safety

Activate

A plugable object persistence, supporting both ORM and NoSQL, plus STM.

MapperDao

ORM library that encourages clean domain model, type safe and with query DSL that resembles select statements.

SORMA pure case-classes oriented ORM framework for Scala
powerscalaAn efficient abstraction layer for dealing with case classes. Default implementation is for MongoDB, but others can be easily supported.

NoSQL

Name

Description

MemcontinuationedMemcached client for Scala
SandraAn Apache Cassandra Toolkit

scouchdb

CouchDB driver and View Server in Scala

scala-redis

Scala client for Redis

Casbah

Officially supported Scala Driver for MongoDB

Gizzard

A framework for creating distributed datastores

Salat

Fast bi-directional Scala case class to MongoDB mapping library

Rogue

A Lift/MongoDB query DSL

Hammersmith

Pure asynchronous MongoDB Driver for Scala

SubsetLibrary to ease serializing/deserializing MongoDB documents and constructing queries
powerscalaAn efficient abstraction layer for dealing with case classes. Default implementation is for MongoDB, but others can be easily supported.

Graph

FlockDB

A distributed, fault-tolerant graph database

Neo4J

Scala implementation of RESTful JSON HTTP resources on top of the Neo4j graph

Neo4j Spatial

Scala wrapper for Neo4j Spatial Extension

Neo4j ScalaScala wrapper for Neo4j

Utilities

Name

Description

SQLShell

A cross-platform, cross-database SQL command tool

scala-migrations

Database migrations written in Scala

Web

Clients

Name

Description

Dispatch

Scala library for accessing HTTP services

Smile

Actor-based memcache client library

GData Scala Client

Easy access to Google Data API

scala-zookeeper-client

A ZooKeeper client library in Scala

spray-canA low-overhead, high-performance, fully asynchronous HTTP 1.1 client (and server) implemented entirely in Scala on top of Akka

spray-client

A higher-level API layer on top of the spray-can HttpClient, supports connection pooling, custom type (un)marshalling and HTTP pipelining

atom-client

An AtomPub client with some smarts

SJersey-ClientA Scala wrapper for Jerseys REST Client implementation
Bee Client

A lightweight Scala wrapper for HttpURLConnection - lightweight and thread-safe

NewmanHTTP client specifically for Scala

Servers

Name

Description

spray-can

A low-overhead, high-performance, fully asynchronous HTTP 1.1 server (and client) implemented entirely in Scala on top of Akka

tiscafA light and fast HTTP server without external dependencies written in and intended to be used with Scala
XitrumAsync and clustered Scala web framework and HTTP(S) server on top of Netty, Akka, and Hazelcast
HyperscalaA bare-metal implementation of HTML, CSS, and JavaScript in Scala that also provides a server infrastructure built on Netty.

Frameworks

Name

Description

BlueEyesA lightweight Web 3.0 framework for Scala, featuring a purely asynchronous architecture, extremely high-performance, massive scalability, high usability, and a functional, composable design
BowlerA RESTful, Multi-Channel ready Scala Web Framework with a functional flavor

Circumflex

Lightweight Scala-based Web application framework and ORM

FinagleA fault tolerant, protocol-agnostic network client and server
HyperscalaA bare-metal implementation of HTML, CSS, and JavaScript in Scala that also provides a server infrastructure built on Netty.

Lift

The Lift Web framework for Scala

OstrichStats collector & reporter for scala servers
PinkyScala 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! Scala

Play Web framework for Scala

Scalatra

Tiny Scala Web framework, inspired by Sinatra

Scalate

Scala template engine: like JSP but without the crap and with added Scala coolness

SJerseySJersey 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.

Socko  

An embedded Scala web server powered by Netty networking and Akka processing

Spray

A Scala framework for building RESTful web services on top of Akka: lightweight, asynchronous, non-blocking, actor-based, testable

Sweet

A Scala framework for building dynamic Web applications

Unfiltered

A toolkit for servicing HTTP requests in Scala

Vaadin

Vaadin is a Java/GWT Web application framework for Rich Internet Applications (RIA) with support for Scala

Xitrum

Async and clustered Scala web framework and HTTP(S) server on top of Netty, Akka, and Hazelcast

Semantic

Name

Description

Swap

Smart Data Tools for the Semantic Web

FeDeRate

SPARQL endpoint over the Direct Graph derived from a particular Relational Database

Desktop

Swing

NameDescription
ScalaSwingContribThis missing bits for Scala-Swing, e.g. Tree, GroupPanel, PopupMenu, ColorChooser

Java FX

NameDescription
ScalaFX

DSL and bindings to JavaFX2

Functional reactive programming

Name

Description

scala-react

Advanced FRP library based on delimited continuations, there is a paper with Odersky on it

reactiveSimple general-utility FRP kit, with bindings for Lift
direDiscrete FRP library, inspired by both scala-react and reactive, backed up by scalaz
SynapseGridAn 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

Eventsourced

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

Akka

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.

Asynchronous Functional Programming

Fast actors using replies without future, actor-based functional programming with keyed sequences, and an versioned graphical database

Software Transactional Memory

Name

Description

Akka STM

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.

ScalaSTM

Software transactional memory

RadonSTM

Timestamp based Software Transaction Memory

MUTS

Manchester University Transactions for Scala (STM, supports legacy code)

LucreSTMSTM layer on top of Scala-STM, adding optional durability and persistence

Parallel Computing

Name

Description

Parallel Collections

[Standard Library] Collections that utilize multi-core CPUs for common operations

Menthor

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)

ScaldingA library for specifying Hadoop jobs
Summingbirda library that lets you write MapReduce programs that look like native Scala or Java collection transformations, executes on Scalding and Storm
synapse-grid-concurrentPart 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

Distributed Collections

Collections that can be stored across many machines

Norbert

Cluster manager and networking layer built on top of ZooKeeper

GridGain

High Performance Cloud Computing, Community Edition

Menthor

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

Kestrel

Tiny queue system based on starling, in scala

scalaconcurrencyA wrapper around java.concurrent package that allows usage of executors, locks in a more scala-ish way

Language and Text Processing

Parsing

Name

Description

scala.util.parsing

[Standard Library] Parser combinators

GLL Combinators

A parser combinator library based on the GLL algorithm

Parboiled2A macro-based PEG parser generator for Scala 2.10+, successor of parboiled - fast, powerful, light-weight, proper error reporting

Parboiled

Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful

Scarpia

A Scala port of the Parsec parser combinator library

Nomo

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

VisualLangLab

A Visual Parser-Generator

Scala xgettextCompiler plugin that acts like GNU xgettext command to extract i18n strings in Scala source code files to Gettext .po file
ScaposerGNU Gettext .po file loader

String Formatting and Template Engine

Name

Description

Fastring

Extremely fast string formatting

Other

Name

Description

Rex

Regular expressions DSL

Kiama

A Scala library for language processing

gapt

Generic Architecture for Proofs; data types, algorithms, parsers, transformations and other components common in proof theory in general and mechanized proof theory in particular.

Scalasti

A Scala interface to the Java StringTemplate library

MarkWrap

Unified Scala wrapper API for various lightweight markup APIs

PamfletPublishing application for short texts, particularly user documentation

Multimedia

Graphics

Name

Description

Simplex3D

Scala 3D engine with modular architecture

Sgine

Scala engine for high performance interactive 3D applications

tie

Programmatic Technical Drawing in Scala

YaGeS

Yet another Game engine (in Scala)

Apparat

A framework to optimize ABC, SWC and SWF files

SPDEScala library based on the Processing multimedia language

Audio and Music

Name

Description

ScalaAudioFileA library to read and write uncompressed audio files (AIFF, WAVE, etc.)
ScalaColliderA sound synthesis library for the SuperCollider server
ScalaMIDIA library for accessing standard MIDI files

 

Scientific and Numerical Computing

Mathematics

Name

Description

SpirePowerful new number types and numeric abstractions (complex, rational, real, interval etc.
SaddleA data manipulation library that provides array-backed, indexed, one- and two-dimensional data structures

ScalaLab

A MATLAB-like, easy to use, scientific programming environment. Can exploit many scientific libraries, has extensive ploting support,

is expandable, configurable and much more.

Scalala

High performance numeric linear algebra library for Scala, superseded by Breeze

FACTORIE

Probabilistic programming with imperatively-defined factor graphs

algebirdAbstract algebra for large-scale analytics

scas

Scala algebra system

scabolic

SAT solver and algebraic functions

Graph for Scala

Graph representation and algorithms.

GPU computation

Name

Description

ScalaCL

Faster Scala: optimizing compiler plugin + GPU-backed collections (OpenCL)

Other

Name

Description

Scalar

Run-time enforcement of numeric units (distance, weight, etc.)

Breeze

Useful routines for natural language processing (NLP) and machine learning

ChalkA library for natural language processing (subproject of Breeze)

OpenVC

An open source VHDL compiler/simulator

gnode-client-lib

JVM Library for G-Node data store

jaseriesAPI for time numeric series operations

Education

Name

Description

Kojo

The Kojo Learning Environment

Flashup

A simple markup language for creating flashcards

 

Scala Language-Integrated Connection Kit

  • No labels