The team behind the Scala general-purpose programming language has blogged to detail the release of the Akka 2.0 toolkit and runtime. Designed for building highly concurrent, distributed, and fault tolerant event-driven applications on the Java Virtual Machine, Akka 2.0 is said to represent a "major step forward" for concurrent programming using Scala or Java.
According to Jonas Bonér, Akka originator and CTO of "packaged-Scala" company Typesafe, the Akka team has built on the experiences of the Akka 1 series and moved to the next level in terms of resilience, scalability, and extensibility by design — with a smaller footprint. (Akka received an honorable mention in the 2012 Jolt Awards for Libraries).
Note: For fault-tolerance, Akka adopts the "Let it Crash" model, which its makers say has been used with "great success" in the telecom industry to build applications that self-heal and systems that never stop.
Bonér says that Akka 2.0 has many new features to make tasks easier for the developer, including Supervision and Death Watch, Paths and Addresses, Location Transparency, and Event Bus, as well as much improved performance and scalability.
"Akka is a modern event-driven middleware framework, for building high performance and reliable distributed applications in Java and Scala. Akka decouples business logic from low-level mechanisms such as threads and locks. Your Scala or Java program logic lives in lightweight actor objects, which send and receive messages. With Akka, you can easily configure how actors are created, destroyed, scheduled, and restarted upon failure," writes Bonér.
Akka technical lead Viktor Klang notes that Akka 2.0 sees 700 tickets closed and 1,020 files changed with 98,683 insertion and 57,415 deletions and over 300 pages of reference documentation. Mindful of the popularity of the existing Akka 1.x, the new version of Akka comes with a migration kit that should make it easier for 1.x users to migrate in small, incremental steps to the 2.0 version.
While supervision was available in a limited form in earlier versions of Akka, in 2.0 the team has introduced a new DSL for managing failure, which makes it simple to define what happens when something goes wrong: