what is akka and for which purpose it is used?

akka

Solution

In a nutshell, Akka is a convenient framework for doing reactive and distributed application on the JVM. It is based on the reactive manifesto and therefore it is :

Event-driven with message passing (i.e loosely coupled)

Resilient through the use of supervision strategies, death watch and hierarchies.

Scalable and responsive thanks to saving resources with your actors sharing threads in a non-blocking way. Before, when you were challenged with concurrency problems, you used to have locking mechanisms blocking the current thread and context switching.

Disregarding the performance themselves, the actor model is also much more simple to reason about. Thinking of interactions between people (i.e actors) is easier than thinking of avoiding deadlocks and starvations. So should we always use Akka ? Well if you're a real shared state concurrency guru and you want the very best performance for specific stuff, then no. If you're like most of us, then you can.

Problem

I want to know what is the use of `Akka`. I read about it from the internet, and know that it is a toolkit and uses the Actor model system. After this I studied about the Actor model system in which there are different actors that can message each other and initiate action. I also know that Akka helps provide concurrency and avoid the locking mechanism. But even after reading all this I am unable to summarize exactly what Akka is and why we use it? Also, how is it used? Can anyone please elaborate it to me in simple words? Thanks.

Original source