In this chapter, we introduce Akka, the open source library we use throughout the remainder of this book. If you’re reading this far, you probably already have a good idea about what Akka is, but you might not know the whole story.
Akka is a toolkit that you can use to implement all of the patterns we discuss in the remainder of the book, allowing you to put these techniques to immediate and practical use in your own applications.
Akka is described on its home page as “an open source toolkit and runtime simplifying the construction of concurrent and distributed applications on the Java Virtual Machine (JVM).”
It goes on to say that Akka supports multiple programming models but emphasizes actor-based concurrency, with inspiration drawn from Erlang.
This is a good high-level description, but Akka is much more. Let’s look a bit deeper.
Akka is an open source project released under the Apache 2 License, a recognized open source license, making it free to use and extend in both other open source efforts and in commercial libraries and applications.
Although it is fully usable from Java, Akka is itself written in Scala and gains the benefit of the attributes of this language as a result, including strong type safety, high performance, low memory footprint, and compatibility with all other JVM libraries and languages. One of the key features of the Scala language that is used heavily in Akka is the focus on immutable data ...