Scala frameworks


Awesome Scala

A community driven list of useful Scala libraries, frameworks and software. This is not a catalog of all the libraries, just a starting point for your explorations. Inspired by awesome-python. Other amazingly awesome lists can be found in the awesome-awesomeness list.

Database

Database access libraries in Scala.
  • ScalikeJDBC — A tidy SQL-based DB access library for Scala developers.
  • Slick — Modern database query and access library for Scala.
  • Squeryl — A Scala DSL for talking with databases with minimum verbosity and maximum type safety.
  • Activate — Pluggable object persistence in Scala.
  • Scala ActiveRecord — ORM library for scala, inspired by ActiveRecord of Ruby on Rails.
  • PostgreSQL and MySQL async — Async database drivers to talk to PostgreSQL and MySQL in Scala.
  • ReactiveMongo — Reactive Scala Driver for MongoDB.
  • Phantom — Async type safe Scala DSL for Apache Cassandra.
  • ReactiveCouchbase — Reactive Scala Driver for Couchbase. Also includes a Play plug-in. An official plug-in is also in development.
  • Salat — ORM for MongoDB. A related Play-plugin is also available.

Web Frameworks

Scala frameworks for web development.
  • Play — Makes it easy to build scalable, fast and real-time web applications with Java & Scala.
  • Lift — Secure and powerful full stack web framework (discussion).
  • Skinny Framework — A full-stack web app framework upon Scalatra for rapid Development in Scala.
  • Scalatra — Tiny Scala high-performance, async web framework, inspired by Sinatra.
  • Spray — A suite of scala libraries for building and consuming RESTful web services on top of Akka.
  • Finatra — A sinatra-inspired web framework for scala, running on top of Finagle.
  • Reactive — FRP and web abstractions, which can be plugged into any web framework (currently only has bindings for Lift).
  • Chaos — A lightweight framework for writing REST services in Scala.
  • Xitrum — An async and clustered Scala web framework and HTTP(S) server fusion on top of Netty, Akka, and Hazelcast.
  • Unfiltered — A modular set of unopinionated primitives for servicing HTTP and WebSocket requests in Scala.

i18n

Scala libraries for i18n.
  • Scaposer – GNU Gettext .po file loader for Scala.
  • scala-xgettext – A compiler plugin that acts like GNU xgettext command to extract i18n strings in Scala source code files to Gettext .po file.

Authentication

Libraries for implementing authentications schemes.
  • scala-oauth2-provider — OAuth 2.0 server-side implementation written in Scala.
  • SecureSocial — A module that provides OAuth, OAuth2 and OpenID authentication for Play Framework applications.
  • play2-auth — Play2.x Authentication and Authorization module.
  • play-pac4j — Profile & Authentication Client in Scala for CAS, OAuth, OpenID, SAML & HTTP protocols and Play 2.x framework.

Testing

Libraries for code testing.
  • ScalaCheck — Property-based testing for Scala.
  • ScalaTest — A testing tool for Scala and Java developers.
  • ScalaMeter - Performance & memory footprint measuring, regression testing.
  • Specs2 — Software Specifications for Scala.
  • µTest — A tiny, portable testing library for Scala.
  • Scalive — Connect a Scala REPL to running JVM processes without any prior setup; this library is used for inspecting systems in production mode.
  • Scalastyle – Scala style checker.
  • Gatling – Async Scala-Akka-Netty based Stress Tool.

JSON Manipulation

Libraries for work with json.
  • json4s — Project aims to provide a single AST to be used by other scala json libraries.
  • spray-json — Lightweight, clean and efficient JSON implementation in Scala.
  • argonaut — Purely Functional JSON in Scala.
  • jackson-module-scala — Add-on module for Jackson to support Scala-specific datatypes.
  • play-json — Flexible and powerful JSON manipulation, validation and serialization, with no reflection at runtime.

Serialization

Libraries for serializing and deserializing data for storage or transport.
  • Pickling — Fast, customizable, boilerplate-free pickling support.
  • scodec — A combinator library for working with binary data.
  • Scrooge — An Apache Thrift code generator for Scala.
  • validation — Advanced validation & serialization for JSON, HTML form data, etc, with no reflection at runtime.

Science and Data Analysis

Libraries for scientific computing, data analysis and numerical processing.
  • Breeze — Breeze is a numerical processing library for Scala.
  • MLLib — Machine Learning framework for Spark
  • Spire — Powerful new number types and numeric abstractions for Scala.
  • Algebird — Abstract Algebra for Scala.
  • FACTORIE — A toolkit for deployable probabilistic modeling, implemented as a software library in Scala.
  • Saddle — A minimalist port of Pandas to Scala
  • Squants — The Scala API for Quantities, Units of Measure and Dimensional Analysis.
  • MGO — Modular multi-objective evolutionary algorithm optimization library enforcing immutability.

Big Data

  • Spark — Lightning fast cluster computing — up to 100x faster than Hadoop for iterative algorithms (memory caching) and up to 10x faster than Hadoop for single-pass MapReduce jobs. Compatible with YARN-enabled Hadoop clusters, can run on Mesos and in stand-alone mode as well.
  • Scalding — A Scala binding for the Cascading abstraction of Hadoop MapReduce.
  • Summingbird — An implementation of the “lambda architecture” as a software abstraction — a single API for Hadoop and Storm.
  • Scrunch — A Scala wrapper for Apache Crunch which provides a framework for writing, testing, and running MapReduce pipelines.
  • GridScale — A Scala API for computing clusters and grids.
  • scoozie — Scala DSL on top of Oozie XML.

Functional Reactive Programming

Event streams, signals, observables, etc.
  • Scala.Rx — An experimental library for Functional Reactive Programming in Scala (reactive variables). Scala.js compatible.
  • scala.frp — Functional Reactive Programming for Scala (event streams).
  • RxJava-Scala — Scala Adaptor for RxJava.
  • Reactive Collections – A library that incorporates event streams and signals with specialized collections called reactive containers, and expresses concurrency using isolates and channels.

Modularization and Dependency Injection

Modularization of applications, dependency injection, etc.
  • Domino — Write elegant OSGi bundle activators in Scala.
  • Sclasner - Scala classpath scanner.
  • Scaldi — Lightweight Scala Dependency Injection Library.
  • MacWire — Scala Macro to generate wiring code for class instantiation. DI container replacement.
  • SubCut — Scala Uniquely Bound Classes Under Traits.

Distributed Systems

Libraries and frameworks for writing distributed applications.
  • Akka — A toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications.
  • Finagle — An extensible, protocol-agnostic RPC system designed for high performance and concurrency.

Extensions

Scala extensions.
  • Scalaz — An extension to the core Scala library for functional programming.
  • Shapeless — A type class and dependent type based generic programming library for Scala.
  • Twitter Util — General-purpose Scala libraries, including a future implementation and other concurrency tools.
  • Scala Async — An asynchronous programming facility for Scala.
  • Resolvable — A library to optimize fetching immutable data structures from several endpoints in several formats.
  • Scala Blitz – A library to speed up Scala collection operations by removing runtime overheads during compilation, and a custom data-parallel operation runtime.
  • Log4s - Fast, Scala-friendly logging bindings on top of SLF4J. Uses macros for extreme performance.

Android

Scala libraries and wrappers for Android development.
  • Scaloid — Less painful Android development with Scala.
  • Macroid — A modular functional UI language for Android.
  • Android SDK Plugin for SBT — An sbt plugin that adds tasks for developing Android applications.

HTTP

Scala libraries and wrappers for HTTP clients.
  • Dispatch — Library for asynchronous HTTP interaction. It provides a Scala vocabulary for Java’sasync-http-client.
  • Netcaty - Simple net test client/server for Netty and Scala lovers.
  • Scalaxb — An XML data-binding tool for Scala that supports W3C XML Schema (xsd) and Web Services Description Language (wsdl) as the input file.
  • Spray — Actor-based library for http interaction.
  • Tubesocks — Library supporting bi-directional communication with websocket servers.
  • scalaj-http – Simple scala wrapper for HttpURLConnection (including OAuth support).

Semantic Web

Scala libraries for interactions with the Web of Data, and other RDF tools
  • Banana-RDF – Scala-friendly abstractions for RDF and Linked Data technologies. Supports Jena, Sesame and native Scala.

Contributing

Your contributions are always welcome! Please submit a pull request or create an issue to add a new framework, library or software to the list. Do not submit a project that hasn’t been updated in the past 6 months or is not awesome.

Comments