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