Programming Scala

Programming Scala, Third Edition, which covers Scala 3, will be published early in 2021. You can read “early access release” chapters now on the O'Reilly online learning platform.

I've also started a blog series about Scala 3, where I summarize the highlights of what's coming.

You can also find this synopsis of Scala 3 changes, which I used as notes for a talk at the November 20, 2020 meeting of the Chicago Area Scala Enthusiasts.

The repo for the book's code examples is now a work-in-progress towards the new edition, but the second edition code was recently upgraded to work with Scala 2.12 and 2.13. Grab the v2.1.0 tagged release for the code that still closely follows the organization of the second edition of the book, but is updated for Scala 2.12 and 2.13. The current master branch only supports Scala 3.

I'll update the rest of this page once the third edition is published.

Programming Scala is a comprehensive and up-to-date introduction to Scala. It covers the features of Scala version 2.11, although the code examples have recently been updated for Scala 2.12 and 2.13 (see below).

I wrote the book on Scala that I would want to read, if I were to start from the following background:

  • I'm an experienced developer of Enterprise or Internet, server-side applications.
  • I know Java and perhaps a few other languages.
  • I know Object-Oriented Programming, but not necessarily Functional Programming.
  • I hear that Functional Programming is the "future" and Scala is a natural migration step from Java.
  • I'm serious about learning Scala.

I would read Programming Scala to achieve the following:

  • Learn why Scala has become the language of choice for data engineering work in Big Data environments with tools like Spark and Kafka.
  • Learn why Scala is an excellent language for state of the art microservices.
  • Learn the common idioms, libraries, tools, and techniques used by experts.
  • Master all the major features of Scala, warts and all.

There are some more obscure topics that I omit and other very advanced topics that I briefly mention, so you'll be aware of them. Still, my goal for the reader is to really know the language, the common techniques used to solve various design problems, and to understand how Scala is used in domains like Big Data.

For more information:

To discuss the book, the code examples, etc. use one of these forums:

If you're using Spark and you want a quick introduction to Scala aimed at Spark developers, check out my free tutorial, Just Enough Scala for Spark.

Programming Scala, 2nd Edition