View on Github

Awesome Scala Awesome

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.

Also awesome is Scaladex, the searchable, tagged, and centralized index of Scala libraries.

Projects with over 500 stargazers are in bold.

Table of Contents

Artificial Intelligence

Database

Database access libraries in Scala.

Messaging

Graphical User Interfaces

Libraries for creation of graphical user interfaces

Web Frameworks

Scala frameworks for web development.

Reactive Web Frameworks

Scala libraries for Reactive Web development

  • Binding.scala ★ 1481 ⧗ 1 - A reactive web framework. It enables you use native XML literal syntax to create reactive DOM nodes, which are able to automatically change whenever the data source changes.
  • Korolev ★ 415 ⧗ 0 - Modern single-page applications running on the server side
  • Udash ★ 375 ⧗ 1 - a web framework based on Scala.js with support for property bindings, frontend routing, i18n and much more. It also provides strongly typed client<->server RPC system based on WebSockets.
  • Vert.x Web ★ 86 ⧗ 24 - Toolkit to build Reactive web applications..
  • Widok ★ 127 ⧗ 252 - Reactive web framework for the JVM and Scala.js

Data Binding and Validation

Scala libraries for data binding and validation

i18n

Scala libraries for i18n.

Authentication

Libraries for implementing authentications schemes.

Authorization

Libraries for implementing authorization strategies.

  • deadbolt-2 ★ 500 ⧗ 4 - A Play 2.x module supporting role-based and proprietary authorization; idiomatic APIs for Scala and Java APIs are provided.

Cryptography

Cryptography and Encryption Libraries.

Testing

Libraries for code testing.

JSON

Libraries for work with json.

YAML

Libraries for work with YAML.

CSV

Libraries for work with CSV.

Serialization

Libraries for serializing and deserializing data for storage or transport.

Science and Data Analysis

Libraries for scientific computing, data analysis and numerical processing.

  • Algebird ★ 1960 ⧗ 0 - Abstract Algebra for Scala.
  • Axle ★ 63 ⧗ 33 - A Spire-based DSL for scientific cloud computing.
  • BigDL ★ 3294 ⧗ 1 - BigDL is a distributed deep learning library for Apache Spark.
  • Breeze ★ 3085 ⧗ 0 - Breeze is a numerical processing library for Scala.
  • Chalk ★ 263 ⧗ 9 - Chalk is a natural language processing library.
  • Clustering4Ever ★ 80 ⧗ 0 - Scala and Spark API to benchmark and analyse clustering algorithms on any vectorization you can generate
  • doddle-model ★ 139 ⧗ 25 - An in-memory machine learning library built on top of Breeze. It provides immutable objects and exposes its functionality through a scikit-learn-like API.
  • FACTORIE ★ 556 ⧗ 9 - A toolkit for deployable probabilistic modeling, implemented as a software library in Scala.
  • Figaro ★ 707 ⧗ 11 - Figaro is a probabilistic programming language that supports development of very rich probabilistic models.
  • Libra ★ 189 ⧗ 0 - Libra is a dimensional analysis library based on shapeless, spire and singleton-ops. It contains out of the box support for SI units for all numeric types.
  • LoMRF ★ 70 ⧗ 15 - An open-source implementation of Markov Logic Networks in Scala
  • MGO ★ 61 ⧗ 10 - Modular multi-objective evolutionary algorithm optimization library enforcing immutability.
  • MLLib - Machine Learning framework for Spark
  • ND4S ★ 297 ⧗ 11 - N-Dimensional arrays and linear algebra for Scala with an API similar to Numpy. ND4S is a scala wrapper around ND4J.
  • Numsca ★ 102 ⧗ 2 - Numsca is Numpy for Scala.
  • OpenMOLE ★ 115 ⧗ 0 - OpenMOLE (Open MOdeL Experiment) is a workflow engine designed to leverage the computing power of distributed execution environments for naturally parallel processes.
  • Optimus ★ 115 ⧗ 23 - Optimus is a library for Linear and Quadratic mathematical optimization written in Scala programming language.
  • OscaR - a Scala toolkit for solving Operations Research problems
  • Persist-Units ★ 9 ⧗ 1137 - Type check units of measure in Scala.
  • PredictionIO ★ 12329 ⧗ 0 - machine learning server for developers and data scientists. Built on Apache Spark, HBase and Spray
  • Rings ★ 44 ⧗ 13 - An efficient library for polynomial rings. Commutative algebra, polynomial GCDs, polynomial factorization and other sci things at a really high speed.
  • Saddle ★ 508 ⧗ 0 - A minimalist port of Pandas to Scala
  • Smile ★ 4710 ⧗ 0 - Statistical Machine Intelligence and Learning Engine. Smile is a fast and comprehensive machine learning system.
  • Spark Notebook ★ 2919 ⧗ 0 - Scalable and stable Scala and Spark focused notebook bridging the gap between JVM and Data Scientists (incl. extendable, typesafe and reactive charts).
  • Spire ★ 1573 ⧗ 3 - Powerful new number types and numeric abstractions for Scala.
  • Squants ★ 702 ⧗ 0 - The Scala API for Quantities, Units of Measure and Dimensional Analysis.
  • SwiftLearner ★ 35 ⧗ 93 - Simply written algorithms to help study Machine Learning or write your own implementations.
  • Synapses ★ 33 ⧗ 9 - Lightweight Neural Network library, for js, jvm and .net.
  • Tensorflow_scala ★ 762 ⧗ 3 - TensorFlow API for the Scala Programming Language
  • Tyche ★ 97 ⧗ 34 - Probability distributions, stochastic & Markov processes, lattice walks, simple random sampling. A simple yet robust Scala library.
  • Zeppelin ★ 4656 ⧗ 0 - Scala and Spark Notebook (like IPython Notebook)

Big Data

Command Line Interfaces

Libraries for creation of command line interfaces

Image processing and image analysis

2D and 3D image processing and image analysis

Sound processing and music

Functional Reactive Programming

Event streams, signals, observables, etc.

  • fs2 ★ 1644 ⧗ 0 - Compositional, streaming I/O library for Scala
  • Iteratee ★ 183 ⧗ 5 - Iteratees for cats
  • Monix ★ 1659 ⧗ 1 - Extensions to Scala’s standard library for multi-threading primitives and functional reactive programming. Scala.js compatible.
  • Reactive Collections ★ 3 ⧗ 588 - A library that incorporates event streams and signals with specialized collections called reactive containers, and expresses concurrency using isolates and channels.
  • Reactor-Scala-Extensions - Scala extensions for Project Reactor ★ 39 ⧗ 4 - None
  • REScala ★ 42 ⧗ 9 - REScala is a library for functional reactive programming on the JVM and the Web. It provides a rich API for event stream transformations and signal composition with managed consistent up-to-date state and minimal syntactic overhead.
  • RxScala ★ 882 ⧗ 1 - Reactive Extensions for Scala – a library for composing asynchronous and event-based programs using observable sequences
  • scala.frp ★ 23 ⧗ 35 - Functional Reactive Programming for Scala (event streams).
  • Scala.Rx ★ 943 ⧗ 1 - An experimental library for Functional Reactive Programming in Scala (reactive variables). Scala.js compatible.
  • Scalaz ZIO ★ 2166 ⧗ 0 - A type-safe, composable library for asynchronous and concurrent programming in Scala
  • SynapseGrid ★ 123 ⧗ 19 - an FRP framework for constructing reactive real-time immutable data flow systems. It implements an original way of running and organizing event-driven systems based on Petri nets. The topology can be viewed as a .dot graph. The library is compatible with Akka and can seamlessly communicate with other actors.
  • Vert.x ★ 86 ⧗ 24 - A polyglot reactive application platform for the JVM which aims to be an alternative to node.js. Its concurrency model resembles actors. It supports Scala, Clojure, Java, Javascript, Ruby, Groovy and Python.

Modularization and Dependency Injection

Modularization of applications, dependency injection, etc.

Distributed Systems

Libraries and frameworks for writing distributed applications.

Extensions

Scala extensions.

Misc

Projects that don't fit into any specific category.

Android

Scala libraries and wrappers for Android development.

HTTP

Scala libraries and wrappers for HTTP clients.

Semantic Web

Scala libraries for interactions with the Web of Data, and other RDF tools.

  • Banana-RDF ★ 254 ⧗ 1 - Scala-friendly abstractions for RDF and Linked Data technologies. Supports Jena, Sesame and native Scala.
  • rdfp ★ 6 ⧗ 185 - RDF stream processing framework in Scala
  • Scowl ★ 40 ⧗ 2 - Scala DSL allowing a declarative approach to composing OWL expressions and axioms using the OWL API.

Metrics and Monitoring

Scala libraries for gathering metrics and monitoring applications.

Parsing

Scala libraries for creating parsers.

Sbt plugins

Sbt plugins to make your life easier.

XML / HTML

XML and HTML generation and processing

Markdown

  • Laika ★ 235 ⧗ 0 - Text Markup Transformer for sbt and Scala applications, transforming Markdown and reStructuredText to HTML and PDF.

JavaScript

JavaScript generation and interop libraries.

Scheduling

Templating

Web templating engines.

Tools

Geospatial

Libraries to aid with geospatial calculations and artifacts.

Devops

DevOps related tools and libraries.

Learning Scala

Nice books, blogs and other resources to learn Scala

Community Members' Blogs

Company Blogs

Misc.

Podcasts

  • CoRecursive Interviews - In-depth Interviews with software developers, often on the subject of scala libraries and functional programming.
  • The Scala Logs - Interviewing developers, open source contributors, subject matter experts, and the like to talk about FP, Scala, open source, and their interests.
  • Scala Love - Podcast about the Scala Programming Language and its community

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.