Akka is an actor-based framework for building distributed applications in Java or Scala. It facilitates the development of scalable middleware systems by taking care of lower-level concerns such as networking, threading, and database access, allowing the developer to focus on application logic. An Akka application is composed of actors (event handlers) that can be optionally deployed either local or remote to other actors without changing application code.
According to Akka on Github:
We believe that writing correct concurrent & distributed, resilient and elastic applications is too hard. Most of the time it's because we are using the wrong tools and the wrong level of abstraction.
Akka is here to change that.
Using the Actor Model we raise the abstraction level and provide a better platform to build correct concurrent and scalable applications. This model is a perfect match for the principles laid out in the Reactive Manifesto.
For resilience, we adopt the "Let it crash" model which the telecom industry has used with great success to build applications that self-heal and systems that never stop.
Actors also provide the abstraction for transparent distribution and the basis for truly scalable and fault-tolerant applications.