Akka (toolkit)

Last updated
Akka
Original author(s) Jonas Bonér
Developer(s) Akka
Initial releaseJuly 2009 (2009-07)
Stable release
3.2 / March 2025;4 months ago (2025-03)
Repository
Written in Java and Scala
Operating system Cross-platform
Platform Java Virtual Machine
License BSL
Website akka.io

Akka is a source-available platform, SDK, toolkit, and runtime simplifying building concurrent and distributed applications on the JVM, for example, agentic AI, microservices, edge/IoT, and streaming applications. Akka supports multiple programming models for concurrency and distribution, but it emphasizes actor-based concurrency, with inspiration drawn from Erlang. [1]

Contents

Language bindings exist for both Java and Scala. Akka is mainly written in Scala. [2]

History

An actor implementation, written by Philipp Haller, was released in July 2006 as part of Scala 2.1.7. [3] By 2008 Scala was attracting attention for use in complex server applications, but concurrency was still typically achieved by creating threads that shared memory and synchronized when necessary using locks. Aware of the difficulties with that approach and inspired by the Erlang programming language's library support for writing highly concurrent, distributed, and event-driven applications, the Swedish programmer Jonas Bonér created Akka to bring similar capabilities to the JVM. Bonér began working on Akka in early 2009 [4] and wrote up his vision for it in June of that year. [5] The first public release was Akka 0.5, [6] announced in January 2010. [7] Akka is now part of the Lightbend Platform together with the Play framework and the Scala programming language.

Akka has now evolved into the Akka Platform, providing a high-level SDK, transparent multi-region and multi-cloud clustering, edge computing allowing building complete Cloud-to-Edge applications, and operational capabilities, with options of running applications in your VPC or in our multi-tenant serverless environment.

In addition to the Akka Libraries—with the actor-based programming model, clustering, distributed data (CRDTs), event sourcing, persistence, streaming, brokerless pub-sub, and more—Akka now also has a high-level SDK layered on top of the Akka Libraries, consisting of a highly opinionated and guard-railed developer experience through high-level components (Entity, View, Workflow, Endpoint, Consumer, Timer) and a local development environment (sandbox, console, etc.).

In September 2022, Lightbend announced that Akka would change its license from the free software license Apache License 2.0 to a proprietary source-available license, known as the Business Source License (BSL). Any new code under the BSL would become available under the Apache License after three years. [8]

Distinguishing features

The key points distinguishing applications based on Akka are:

The programming model for Akka consists of Akka SDK and Akka Libraries:

Relation to other libraries

Other frameworks and toolkits have emerged to form an ecosystem around Akka:

There are more than 250 public projects registered on GitHub which use Akka. [19]

Publications about Akka

There are several books about Akka:

Akka also features in:

Besides many web articles that describe the commercial use of Akka, [32] [33] there are also overview articles about it. [34] [35]

References

  1. Akka Team. "Scala Actors Introduction" . Retrieved 17 September 2018.
  2. Jovanovic, Vojin. "The Scala Actors Migration Guide". Archived from the original on 5 December 2013. Retrieved 13 March 2013.
  3. "Scala Version History - Older versions". scala-lang.org. 2009-02-16. Archived from the original on 2013-01-04.
  4. Jonas Bonér (2009-02-16). "init project setup". github.com.
  5. Bonér, Jonas. "Akka Actor Kernel". scala-language@googlegroups.com. Archived from the original on 2016-03-04. Retrieved 2017-07-13.
  6. Jonas Bonér (2009-07-12). "v0.5". github.com.
  7. Jonas Bonér (2010-01-04). "Introducing Akka - Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Actors". jonasboner.com.
  8. Bonér, Jonas. "Why We Are Changing the License for Akka" . Retrieved 7 September 2022.
  9. "Play framework documentation: Integrating with Akka". playframework.com. Retrieved 6 June 2013.
  10. "Spark project sources". github.com. Retrieved 6 June 2013.
  11. "Socko Web Server". sockoweb.org. Retrieved 6 June 2013.
  12. "eventsourced library". eligosource. Retrieved 6 June 2013.
  13. "Gatling stress test tool". github.com. Retrieved 6 June 2013.
  14. "Akka - Scalatra". scalatra.org. Retrieved 2022-10-06.
  15. "Vaadin in Akka". Vaadin.com. Retrieved 26 April 2014.
  16. "Apache Flink - Akka for the win !". flink.apache.org. Retrieved 2 December 2015.
  17. "Apache Flink: Scala Free in One Fifteen". flink.apache.org. 22 February 2022. Retrieved 2022-04-22.
  18. "Lagom - Integrating with Akka".
  19. Tasharofi, Samira. "Akka actor project corpus at GitHub". cs.illinois.edu. Archived from the original on 2012-10-30. Retrieved 2013-06-06.
  20. Gupta, Munish K. (2012). Akka Essentials. Packt Publishing. p. 334. ISBN   978-1849518284.
  21. Wyatt, Derek (2013). Akka Concurrency. Artima. p. 521. ISBN   978-0981531663.
  22. Lopez-Sancho Abraham, Francisco (2023). Akka in Action, Second Edition. Manning Publications. p. 400. ISBN   978-1617299216.
  23. Roestenburg, Raymond (2013). Akka in Action. Manning Publications. p. 475. ISBN   978-1617291012.
  24. Allen, Jamie (2013). Effective Akka. O'Reilly Media. p. 74. ISBN   978-1449360078.
  25. Slinn, Michael (2012). Composable Futures with Akka 2.0. Micronautics Research. p. 178. ISBN   978-0984278923.
  26. Haller, Philipp (2012). Actors in Scala. Artima. p. 169. ISBN   978-0981531656.
  27. Raychaudhuri, Nilanjan (2013). Scala in Action. Manning Publications. p. 416. ISBN   978-1935182757.
  28. Wampler, Dean (2011). Functional Programming for Java Developers . O'Reilly Media. pp.  90. ISBN   978-1449311032.
  29. Alexander, Alvin (2013). Scala Cookbook. O'Reilly Media. p. 722. ISBN   978-1449339616.
  30. Subramaniam, Venkat (2011). Programming Concurrency on the JVM: Mastering Synchronization, STM, and Actors . Pragmatic Bookshelf. pp.  280. ISBN   978-1934356760.
  31. Bernhardt, Manuel (2016). Reactive Web Applications: Covers Play, Akka and Reactive Streams. Manning Publications. p. 328. ISBN   9781633430099.
  32. Darrow, Barb (25 June 2012). "Juniper networks signs on with Scala". gigaom.com. Archived from the original on 2 June 2013. Retrieved 8 June 2013.
  33. Ross, David. "Scaling the Klout API with Scala, Akka and Play" . Retrieved 8 June 2013.
  34. Haines, Stephen (May 8, 2013). "Open source Java projects: Akka". JavaWorld . Retrieved 2020-07-15.
  35. "Java Magazin 6.13". jaxenter.de. Archived from the original on 13 August 2013. Retrieved 8 June 2013.