Scala is one of the most popular modern languages for programmers to pick up. It offers OOP and functional programming and has tons of free open source frameworks.
But learning Scala from scratch can seem impossible without learning resources. That’s why I’ve curated a huge list of the absolute best Scala books you can get. Topics range from simple beginner books to more advanced programming patterns and frameworks like Play. There’s a lot here so take a peek and see what you can find!
Complete newbies may feel overwhelmed with this book not knowing where to start. I’d personally recommend Programming in Scala because it’s densely packed with information yet easy to follow. The exercises are practical and the authors hold your hand along the way to make sure you never get lost.
Sample exercises offer the best teaching materials for less-experienced programmers. And the exercises in Scala for the Impatient are some of the most helpful you can get.
The book is still pretty lengthy with just under 400 pages total. Early chapters introduce the basics of Scala with exercises in typing and basic arithmetic. You’ll quickly move through other practical examples that build upon previous lessons to give you a real-world view of Scala programming.
What I like most about this book is the straightforward writing style. The author Cay Horstmann avoids repetitive language so that you’ll really feel like you’re getting somewhere with each chapter.
While these lessons are made for beginners they’re not overly simplified. You’ll need to put in the work if you want to see results. But with these exercises and the straightforward writing style you should feel like a pro Scala developer by the end of this title.
This is without a doubt the most detailed introductory book to Scala programming. It has over 800 pages full of beginner’s guides to the syntax and programming structure.
With Programming in Scala you’ll learn everything from scratch without any assumed prior knowledge. The authors all have experience writing code and place emphasis on the best coding standards. You’ll also learn about the differences between object-oriented programming and functional programming.
The writing style is super easy to follow which makes this book the perfect choice for complete beginners. Every chapter naturally flows into the next and you’ll have no trouble comprehending each new concept as you move through the lessons.
Some beginners may find the page count a tad intimidating. This really is a long book and it goes into serious depth with the Scala language.
If you’re willing to put in the work and challenge yourself then Programming in Scala is the best book you can get as a newbie.
Many developers start with object-oriented programming because it’s simpler and it makes more logical sense when architecting a project. But functional programming has been growing in popularity and Scala is one of the best languages for FP development.
Functional Programming in Scala teaches the basics of functional programming using Scala as your practice language. You’ll learn about Scala syntax along with functional design patterns and best practices.
Debugging and unit testing are both much easier with functional programming. This book guides you through the entire debugging process to ingrain these habits into your FP workflow.
Ideally this book is for someone who already knows Scala but doesn’t know anything about functional programming. However even if you’ve never touched Scala before you can work through this book provided you’re willing to look up confusing terms and solve any problems you bump into.
I always recommend the practical approach to learning and Scala in Action is the most practical intro book for beginners. This book covers all the basics of Scala with a “how to” approach focused more on practice rather than theory.
You can easily pick up this book with no prior programming experience. The writing style is technical but also dense with lengthy explanations.
Early chapters cover the basics of Scala and how to write simple applications from scratch. But you’ll eventually move onto the Play framework and the Spring framework with JVM/Scala. You don’t need any Java experience but it can make the lessons easier to absorb.
I’d give this book a pretty high rating for its accessibility and level of detail. The writing is very technical so it’s not the gentlest newbie book.
However it does cover all the fundamentals of Scala and a touch more.
If you’re in web development then Scala might seem a bit distant. But in Jason Swartz’s Learning Scala you’ll learn how Python and Ruby coders can merge their knowledge with Scala to improve their programming skills.
This is strictly a Scala book and it only teaches the functional programming side of Scala. But the author relates many topics back to other programming languages to help readers connect the dots. You’ll learn about data types and literals along with immutable data structures with Scala.
You’ll work through many exercises but this book also has tons of diagrams and visuals along the way. These visuals can be handy for beginners who aren’t sure about the purpose of Scala or how all the features work.
By the end of this book you’ll be comfortable working with existing libraries, writing your own classes, and building clean Scala code that’s easy to maintain and extend.
This book is meant for existing programmers who have little-to-no understanding of Scala itself. Scala in Depth offers 300 pages full of exercises and explanations for all of Scala’s common features.
You’ll learn how to build applications with the classic Scala methodologies following functional programming, basic OO features, and actors for concurrent programming.
The teaching style is very straightforward with the use of exercises and tutorials that guide you through each step. However these are not baby lessons—they’re really meant for programmers with some knowledge and prior experience writing in another language.
But the teaching style is phenomenal and this book is just another great example of Manning’s dedication to quality in all of their books.
Many books teach languages without explaining how they’re used or why you’d use them. But with O’Reilly’s Programming Scala you’ll learn through examples and workflows that can be applied directly to project work.
This is a pretty lengthy title with 586 pages full of tips, tutorials, and best practices for writing Scala code. There is so much to learn with Scala that it can be rather intimidating. But Programming Scala simplifies these concepts and covers even more tools like the CLI and open source Scala libraries.
By working with real world projects you’ll learn how Scala fits into a production pipeline. This book is fantastic for beginner-to-intermediate programmers who might be looking for Scala-oriented careers in the tech/IT industry.
The lessons are very challenging so you’re likely to get pretty frustrated. But use Google to your advantage and try to understand why you’re doing something rather than just following directions.
It’s very common for programmers to study both Java and Scala because they work so well in the same environment. Thus many Java programmers eventually want to move into Scala but aren’t sure where to start.
Scala for Java Developers by Thomas Alexandre teaches the best coding standards for Scala development from the viewpoint of Java programming. This book is pretty detailed and it doesn’t waste time explaining simple concepts like variables and functions.
Instead you’ll just learn the syntax in Scala by comparing applications written in Java. These exercises help you understand the many differences in the two languages. They also help you apply differences to your Scala workflow by teaching through example projects.
Even once you’ve completed this book it can still be handy as a nearby reference guide.
It’s not the most detailed Scala book on the planet, but for teaching Java devs the basics of Scala I’d say this book is top notch in content and execution.
The growing field of data science covers everything from simple database queries to big data apps and so much more. You can typically work with any language and Scala is a popular choice because of its reach and open programming styles.
In Scala for Data Science you’ll learn how to write Scala code that runs over NoSQL databases and scales properly with large applications. You’ll even practice with detailed web frameworks for visualizing big datasets with charting tools.
Before grabbing this book you should already have experience writing simple Scala code. It’s crucial that you understand the foundational syntax because this book doesn’t hold your hand in the beginning.
But if you’re looking for the definitive guide to data science on Scala then this is your book. Lessons range from a Twitter API app to visualization with D3.js and even parallel development on top of Apache Spark.
This is one of the few Scala books that read like one long tutorial. And Building a Recommendation Engine with Scala has a title that pretty much says it all.
You’ll follow a series of lessons that cover 164 pages of Scala source code and best practices for development. You’ll work with machine learning and tools like Apache Spark to aid in your development process.
You’ll first learn how to do something and then learn why it works. Each lesson covers a different topic eventually getting to a recommendation engine for an e-commerce application. The author gets pretty technical delving into different methodologies like collaborative, content-based, and cross-recommendation solutions for recommendation engines.
This is a great book as a solution to this very specific problem. If you need to build a custom autosuggest app with Scala then this book will exceed your expectations.
Just make sure you already know the basics of Scala before getting into these lessons.
All the best programmers understand the value of DRY and reusable code. It’s easy to sit down and churn out blocks of code that work. But organizing your code for optimization is a whole different story.
With Ivan Nikolov’s book Scala Design Patterns you’ll learn how to properly structure your applications with different coding methodologies. You’ll learn about functional programming and TDD/BDD dev cycles.
This seems like a theory-based book with so much reading. But source code and exercise samples will help you understand different design patterns as you work through each chapter.
Naturally you’ll need some Scala under your belt before picking up this book. However once you can write basic Scala apps by yourself this book will push you further to write cleaner and more organized code.
The is perhaps the best action-oriented book for Scala developers. In the 413-page guide Building Applications with Scala you’ll learn how to construct different Scala applications from start to finish.
The author uses plenty of existing Scala libraries like Akka and Play to speed up the process. This means you’ll be learning best practices for Scala app development along with other Scala frameworks.
Early lessons cover IM/chat applications but you’ll move onto more complex topics like a customer-facing API with RESTful features powered by Scala and Spray. Along the way you’ll learn about the fundamentals of functional programming and how to apply these to your app development process.
There is no single correct way to build an application. But there are best practices that can improve your workflow and speed up the development process. You’ll learn everything you need from this book and even a little more.
If you’ve never heard about concurrent programming before and have no idea what it is or where to begin then you’ll love this book. It covers everything about the concurrent programming process with exercises powered by Scala.
Learning Concurrent Programming in Scala starts with multiprocessor systems and the techniques for JVM concurrency. You’ll learn what this is and how it applies to modern application development.
Many developers confuse concurrent and parallel programming even though they’re relatively different. This book will set you straight while also explaining sequential programs and asynchronous development cycles.
I would absolutely recommend this book to anyone serious about concurrent programming. You don’t need any prior knowledge in concurrency but you should already know Scala and feel comfortable building Scala apps.
The topic of performance goes hand-in-hand with code optimization. They both aim to improve the speed and reliability of an application without losing any of the core features.
If you’re interested in performance metrics & custom hacks then check out Scala High Performance Programming. In this book you’ll learn handy tips, tricks, and techniques that help you create performant applications.
The book is only 274 pages so it can feel pretty small. But it moves fast and covers a lot of ground with Scala performance. You’ll get some tips for code optimization but many of the techniques cover system-level changes like distributed systems, caching platforms, and libraries for improving CPU/memory usage.
Overall a really great book is you’re able to follow along. This is not for beginners and many topics can even go over the heads of intermediate-level developers. But if you’re comfortable with Scala and programming then you should have no trouble.
Very few pro developers create applications with the help of a framework. PHP devs have Laravel, Python devs have Django, and Scala devs have Play.
But with such a complicated framework where should you get started? Play for Scala is an excellent intro guide from Manning Publishing. The book covers Play in detail over 328 pages full of exercises focusing on the individual aspects of Play.
You’ll start with the basic installation and MVC architecture. This is crucial to understand if you’re gonna use Play for real-world applications.
From there you’ll learn techniques for Scala forms, user data, persistent web services, custom databases, and so much more. The teaching style follows exercise-driven lessons so you’ll have to follow along to learn.
This is definitely one of the most practical Play books for developers who want to start building apps from scratch.
Once you get through with the basics you might want a more challenging guide to the Play framework. This is where I’d recommend Mastering Play Framework for Scala written by Shiti Saxena.
This book has 300+ pages of guided tutorials and exercises covering internal details of the Play framework. If you already know the basics of Play then this book will take you many steps further into the guts of how it works and how to extend certain features.
You’ll learn how to use Play’s built-in testing features along with third party APIs that can save you time during development. Saxena also teaches you how to write Play plugins from scratch building on top of the core codebase.
I highly recommend reading this book after Play for Scala because they follow so closely in their curriculums.
Mathematicians and scientists rely on programming to solve major problems, analyze datasets, and to create algorithms for computation without manual effort. Scientific Computing with Scala looks into this subject in great detail covering algebraic equations and data visualization.
The book is pretty short with just over 200 pages. But it’s also very detailed offering a lot for scientists and programmers alike.
You should already know a bit about Scala and ideally some college-level maths/statistics. Every exercise in this book follows a mathematics premise focusing on app development for scientific purposes. It can get pretty complicated so you really shouldn’t attempt this book unless you’re ready for a challenge.
But I love the creativity in each lesson and how this book covers each topic. It’s a great resource for college students or data scientists working with Scala for data-driven projects.
You can build machine learning over any common programming language. All techniques are the same but the syntax changes, and since programmers often prefer certain languages it makes sense to find a book matching your preference.
Scala for Machine Learning is a 420-page introductory guide to machine learning on Scala. The book covers scientific computing and machine learning algorithms to help you understand the overall process.
Each chapter follows a few exercises that teach different techniques. These include different data algorithms and probabilistic functions that run over sequential data structures. There’s a lot to learn with machine learning and this book merely scratches the surface.
But it’s a very high-quality introduction and it’s perfect for Scala programmers who want to build machine learning into their projects.
And if you want a simpler intro to machine learning check out my book recommendations for the best machine learning/AI programming books.
If you’re comfortable with basic machine learning and want to move into the harder stuff then check out Mastering Scala Machine Learning by Alex Kozlov. Alex works as a data scientist on many big data projects so he knows his way around machine learning principles.
In this book you’ll delve further into Scala machine learning with functional programming techniques and popular tools/libraries like MLlib.
All the exercises in this book generally work the same but push you further into machine learning concepts. You’ll study new algorithms and different approaches to writing Scala code that scales machine learning in higher-level applications.
There’s so much to cover and most of this material won’t make sense if you’re not already experienced in the field.
But you can pick up this book with minor knowledge in Scala/machine learning just so long as you’re willing to work hard and study.
I would highly recommend this book to every serious Scala programmer on the planet. The Scala Cookbook offers 700+ pages full of recipes and common solutions written in Scala.
These recipes can be very simple or relatively complex. Some use vanilla Scala code while other recipes rely on frameworks and libraries. You’ll find solutions for concurrency, APIs, Scala REPL, SQL+NoSQL databases and so much more.
You don’t need much competency in Scala to learn from this book. Many recipes are meant for beginners and they’re very easy to pick up. However you can go a lot further if you already know how to build simple Scala apps because you’ll understand the syntax and best practices.
Everyone from inexperienced beginners to advanced developers can find value in this cookbook. It makes an excellent reference guide for any Scala project and I can see this book being relevant many years into the future.
There is no single best way to learn Scala. You have to practice and study a lot to gain competency, and some books are much more beginner-friendly than others.
If you’re just getting started with no experience I’d recommend Programming in Scala for a lengthy and thorough introduction. Or if you want to learn the language quickly check out Scala for the Impatient.
Regardless of your skill level or confidence with Scala there’s bound to be at least one book here to help you improve. Check the list again for any titles that stand out or descriptions that catch your attention.