Local setup & IDEs
As a prerequisite, to compile and run Scala code, you'll need to have the Java Development Kit installed. Then, you can use the Scala compiler directly from the command line; use the REPL; or use an IDE such as IntelliJ IDEA or Metals, with a supported text editor. A build tool, such as SBT, Maven or Gradle, will help you in managing dependencies and setting up the compilation pipeline. Below are a couple of guides, which provide a quick-start in various scenarios:
- Official documentation on how to create a simple project!
- IntelliJ bundle - 1-package with Java, IDE and the necessary plugins
- Metals: VS Code / Vim / Emacs users: that’s for you!
- Console REPL & the dominant Scala build tool (SBT)
DID YOU KNOW?
In 2012, we put our first commercial Scala project to production. Since then, we’ve delivered a number of Scala/Akka/Functional programming projects.
Starting with Scala
Scala’s syntax and semantics should feel familiar if you know other modern programming languages. If not, don’t worry: Scala is also a great language to start your programming adventure! Either way, getting to know the basics will allow you to start exploring on your own.
Books we've read
Programming In Scala
Programming in Scala: The definitive book Scala, written by its main architect, Martin Odersky, and long-time Scala experts, Lex Spoon and Bill Venners. Now in its 4th edition, the book guides you through the features of the Scala language, starting with the basics.
Functional programming simplified
This book makes the process of learning functional programming (FP) in Scala as simple as possible by breaking down complex topics into small, bite-size chunks that are easy to understand. The lessons are presented in a logical sequence — the order in which the author learned them — culminating in advanced topics like functional domain modeling, and how to write and use monads.
Functional programming in Scala
Functional Programming in Scala is a serious tutorial for programmers looking to learn FP and apply it to the everyday business of coding. The book guides readers from basic techniques to advanced topics in a logical, concise, and clear progression. In it, you'll find concrete examples and exercises that open up the world of functional programming.
Scala with Cats
The main goal of this book is to teach system architecture and design using the techniques of modern functional programming. This means designing systems as small composable units, expressing constraints and interactions via the type system, and using composition to guide the construction of large systems in a way that maintains the original architectural vision.
Reactive Design Patterns
Reactive Design Patterns is a clearly written guide for building message-driven distributed systems that are resilient, responsive, and elastic. In this book you'll find patterns for messaging, flow control, resource management, and concurrency, along with practical issues like test-friendly designs. All patterns include concrete examples using Scala and Akka.
Meet other Scala programmers
While meeting in-person is currently not possible in most places around the world, many of the meetups and conferences host online events - check them out as well!
A number of cities host monthly meetups and introductory workshops, where you can not only meet fellow Scala programmers, but also share your work, research or what you’ve recently learned!
Whatever the time of the year, chances are that there’s a Scala conference happening near you! A great occasion to spend a couple of days finding out what’s new in Scala, polishing your skills and getting to know the wider community.
Courses we’ve taken
Functional Programming in Scala Specialization
Discover how to write elegant code that works the first time it is run. This Specialization provides a hands-on introduction to functional programming using the widespread programming language, Scala. It begins from the basic building blocks of the functional paradigm, first showing how to use these blocks to solve small problems, before building up to combining these concepts to architect larger functional programs. You'll see how the functional paradigm facilitates parallel and distributed programming, and through a series of hands on examples and programming assignments, you'll learn how to analyze data sets small to large; from parallel programming on multicore architectures, to distributed programming on a cluster using Apache Spark. A final capstone project will allow you to apply the skills you learned by building a large data-intensive application using real-world data.
Application stacks & libraries
There are two main application stacks for Scala. The first is based on the Future abstraction, which models a running asynchronous computation, and the actor model. The second is based on functional programming, referential transparency and data structures which describe concurrently running processes.
The good news is they mostly cooperate! However, when writing an application, you’ll find it easier to pick tools from the same stack. Below is just a sample of some available libraries. The Scala ecosystem is quite rich, offering solutions for many everyday problems.
Other useful libraries
Event sourcing using Cassandra
Connectors to multiple data sources
The best developer tool to load test your web applications
Machine learning server for developers and ML engineers.
API for Apache Beam and Google Cloud Dataflow
Database Tools incl. ORM, Migrations and Admin UI
A better notebook for Scala (and more)
A fault tolerant, protocol-agnostic RPC system
Modify deeply nested case class fields
Bootzooka is our Scala microservice / web application template project. It allows you to quickly start development, skipping the boring parts and focusing on the real business value.
Bootzooka contains only the very basic features that almost any application needs, such as: user registration, password recovery, profile management. This comes along with necessary development infrastructure: error handling, integration with a database and email, packaging and deployment, unit and integration testing, tracing and metrics, and more.
These features are fully implemented both on server- and client- side. You can copy and customize Bootzooka’s code as whole, or pick only the parts that fit your use-case.
Did you know these apps are written in Scala?
If you have a suggestion on how to improve this “Scala starting page”, let us know!
We can’t promise to implement every suggestion, but we’ll definitely take it into account.