Akka (toolkit): Difference between revisions

Content deleted Content added
No edit summary
Tag: references removed
 
(31 intermediate revisions by 22 users not shown)
Line 1:
{{Short description|Open-source runtime}}
{{About|the software library for application development||Akka (disambiguation){{!}}Akka}}
{{Infobox software
Line 7 ⟶ 8:
| developer = [[Lightbend_Inc.|Lightbend]]
| released = {{Start date|2009|07}}
| latest release version = 2.69.31
| latest release date = {{release date and age|20202023|0112|2819}}<ref>{{cite web|author=Akka Team |title=Akka 223.6.310 Released|url=https://akka.io/blog/news/20202023/0110/2831/akka-2.623.310-released|access-date=427 FebruaryDecember 20202023}}</ref>
| status = Active
| programming language = [[Scala (programming language)|Scala]]
| operating system = [[Cross-platform]]
| platform = [[Java Virtual Machine]]
| license = [[Apache License]] 2.0multiple
| website = {{URL|akka.io}}
}}
 
'''Akka''' is a [[free and openSource-available software|source-available]] toolkit and runtime simplifying the construction of concurrent and distributed applications on the [[Java platform|JVM]]. Akka supports multiple programming models for concurrency, but it emphasizes [[Actor model|actor-based concurrency]], with inspiration drawn from [[Erlang (programming language)|Erlang]].<ref>{{cite web|author=Akka Team|title=Scala Actors Introduction|url=https://doc.akka.io/docs/akka/current/actors.html#introduction|accessdate=17 September 2018}}</ref>
 
Language bindings exist for both [[Java (programming language)|Java]] and [[Scala (programming language)|Scala]]. Akka is written in Scala and, as of Scala 2.10, the actors in the Scala standard library are deprecated in favor of Akka.<ref>{{cite web|last= Jovanovic|first=Vojin|title=The Scala Actors Migration Guide|url=http://docs.scala-lang.org/overviews/core/actors-migration-guide.html|accessdate=13 March 2013|archive-date=5 December 2013|archive-url=https://web.archive.org/web/20131205052405/http://docs.scala-lang.org/overviews/core/actors-migration-guide.html|url-status=dead}}</ref>
 
==History==
An actor implementation, written by Philipp Haller, was released in July 2006 as part of Scala 2.1.7.<ref>{{cite web|url=http://www.scala-lang.org/node/156 |title=Scala Version History - Older versions |publisher=scala-lang.org |date=2009-02-16 |url-status=dead |archiveurl=https://web.archive.org/web/20130104213121/http://www.scala-lang.org/node/156 |archivedate=2013-01-04 }}</ref> 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)|Erlang]] programming language's library support for writing highly concurrent, event-driven applications, the Swedish programmer [http://jonasboner.com/ Jonas Bonér] created Akka to bring similar capabilities to Scala and Java. Bonér began working on Akka in early 2009<ref>{{cite web|author=Jonas Bonér |url=https://github.com/akka/akka/commit/0a31ad718883ef0314de6dc8c6c2c9699eadfdae |title=init project setup |publisher=github.com |date=2009-02-16}}</ref> and wrote up his vision for it in June of that year.<ref name="Initial email describing vision for Akka">{{cite web|last=Bonér|first=Jonas|title=Akka Actor Kernel|url=http://permalink.gmane.org/gmane.comp.lang.scala/16486|[email protected]|archive-url=https://web.archive.org/web/20160304071350/http://permalink.gmane.org/gmane.comp.lang.scala/16486|archive-date=2016-03-04|access-date=2017-07-13|url-status=dead}}</ref> The first public release was Akka 0.5,<ref>{{cite web|author=Jonas Bonér |url=https://github.com/akka/akka/tree/v0.5 |title=v0.5 |publisher=github.com |date=2009-07-12}}</ref> announced in January 2010.<ref>{{cite web|author=Jonas Bonér |url=http://jonasboner.com/introducing-akka/ |title= Introducing Akka - Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Actors |publisher=jonasboner.com |date=2010-01-04}}</ref> Akka is now part of the Lightbend Platform together with the [[Play Framework|Play framework]] and the [[Scala (programming language)|Scala]] programming language.
 
In September 2022, Lightbend announced that Akka would change its license from the [[free software|free]] [[software license]] [[Apache License|Apache License 2.0]] to a [[Proprietary software|proprietary]] [[Source-available software|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.<ref>{{cite web |last1=Bonér |first1=Jonas |title=Why We Are Changing the License for Akka |url=https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka |access-date=7 September 2022}}</ref>
 
==Distinguishing features==
Line 43 ⟶ 45:
*The ''eventsourced''<ref>{{cite web|title=eventsourced library|url=https://github.com/eligosource/eventsourced|publisher=eligosource|accessdate=6 June 2013}}</ref> library provides [[event-driven architecture]] (see also [[domain-driven design]]) support for Akka actors
*The [[Gatling (software)|Gatling]] stress test tool for load-testing web servers is built upon Akka<ref>{{cite web|title=Gatling stress test tool|url=https://github.com/excilys/gatling/wiki/Underlying-Technologies|publisher=github.com|accessdate=6 June 2013}}</ref>
*The [[Scalatra]] web framework is built upon Akka and offers integration with itAkka.<ref>{{cite web|title=ScalatraAkka documentation:- AkkaScalatra|url=httphttps://www.scalatra.org/guides/2.2/guides8/async/akka.html|publisher=scalatra.org|accessdate=6 June 2013|archive2022-url=https://web.archive.org/web/20130806034734/http://scalatra.org/2.2/guides/async/akka.html|archive-date=6 August 2013|url-status=dead|df=dmy10-all06}}</ref>
*The [[Vaadin]] web app development framework can integrate with Akka<ref>{{cite web|title=Vaadin in Akka|url=https://vaadin.com/blog/-/blogs/vaadin-in-akka|publisher=Vaadin.com|accessdate=26 April 2014}}</ref>
*The [[Apache Flink]] (platform for distributed stream and batch data processing) RPC system is built uponusing Akka. <ref>{{cite web |title=Apache Flink - Akka for the win ! |url=https://cwiki.apache.org/confluence/display/FLINK/Akka+and+Actors |publisher=flink.apache.org |accessdate=2 December 2015}}</ref> but isolated since v1.14.<ref>{{Cite web |title=Apache Flink: Scala Free in One Fifteen |url=https://flink.apache.org/2022/02/22/scala-free.html |access-date=2022-04-22 |website=flink.apache.org|date=22 February 2022 }}</ref>
*The [[Lagom (framework)|Lagom]] framework for building reactive microservices is implemented on top of akkaAkka.<ref>{{Cite web|url=https://www.lagomframework.com/documentation/1.4.x/java/Akka.html|title = Lagom - Integrating with Akka}}</ref>
There are more than 250 public projects registered on [[GitHub]] which use Akka.<ref>{{cite web|last=Tasharofi|first=Samira|title=Akka actor project corpus at GitHub|url=http://actor-applications.cs.illinois.edu/akka.html|publisher=cs.illinois.edu|access-date=2013-06-06|archive-url=https://web.archive.org/web/20121030173302/http://actor-applications.cs.illinois.edu/akka.html|archive-date=2012-10-30|url-status=dead}}</ref>
 
==Publications about Akka==
There are several books about Akka:
*Akka Essentials<ref>{{cite book|last=Gupta|first=Munish K.|title=Akka Essentials|year=2012|publisher=Packt Publishing|isbn=1849518289978-1849518284|pages=334|url=http://www.packtpub.com/akka-java-applications-essentials/book}}</ref>
*Akka Code Examples
*Akka Concurrency<ref>{{cite book|last=Wyatt|first=Derek|title=Akka Concurrency|year=2013|publisher=Artima|isbn=0981531660978-0981531663|pages=521}}</ref>
*Akka in Action, Second Edition<ref>{{cite book|last=RoestenburgLopez-Sancho Abraham|first=RaymondFrancisco |title=Akka in Action, Second Edition|year=20132023|publisher=Manning Publications|isbn=1617291013978-1617299216|pages=475400}}</ref>
*Effective Akka in Action<ref>{{cite book|last=AllenRoestenburg|first=JamieRaymond|title=Effective Akka in Action|year=2013|publisher=O'ReillyManning MediaPublications|isbn=1449360076978-1617291012|pages=74475}}</ref>
*Effective Akka<ref>{{cite book|last=Allen|first=Jamie|title=Effective Akka|year=2013|publisher=O'Reilly Media|isbn=978-1449360078|pages=74}}</ref>
*Composable Futures with Akka 2.0, Featuring Java, Scala and Akka Code Examples<ref>{{cite book|last=Slinn|first=Michael|title=Composable Futures with Akka 2.0|year=2012|publisher=Micronautics Research|isbn=978-0984278923|pages=178}}</ref>
Akka also features in :
*P. Haller's "Actors in Scala"<ref>{{cite book|last=Haller|first=Philipp|title=Actors in Scala|year=2012|publisher=Artima|isbn=0981531652978-0981531656|pages=169}}</ref>
*N. Raychaudhuri's "Scala in Action"<ref>{{cite book|last=Raychaudhuri|first=Nilanjan|title=Scala in Action|year=2013|publisher=Manning Publications|isbn=978-1935182757|pages=416}}</ref>
*D. Wampler's "Functional Programming for Java Developers"<ref>{{cite book|last=Wampler|first=Dean|title=Functional Programming for Java Developers|url=https://archive.org/details/functionalprogra0000wamp/page/90|url-access=registration|year=2011|publisher=O'Reilly Media|isbn=978-1449311032|pages=[https://archive.org/details/functionalprogra0000wamp/page/90 90]}}</ref>
*A. Alexander's "Scala Cookbook"<ref>{{cite book|last=Alexander|first=Alvin|title=Scala Cookbook|year=2013|publisher=O'Reilly Media|isbn=1449339611978-1449339616|pages=722}}</ref>
*V. Subramaniam's "Programming Concurrency on the JVM"<ref>{{cite book|last=Subramaniam|first=Venkat|title=Programming Concurrency on the JVM: Mastering Synchronization, STM, and Actors|url=https://archive.org/details/programmingconcu00subr_404|url-access=limited|year=2011|publisher=Pragmatic Bookshelf|isbn=193435676X978-1934356760|pages=[https://archive.org/details/programmingconcu00subr_404/page/n281 280]}}</ref>
*M. Bernhardt's "Reactive Web Applications"<ref>{{cite book|last=Bernhardt|first=Manuel|title=Reactive Web Applications: Covers Play, Akka and Reactive Streams|year=2016|publisher=Manning Publications|isbn= 9781633430099|pages=328}}</ref>
Besides many web articles that describe the commercial use of Akka,<ref>{{cite web|last=Darrow|first=Barb|title=Juniper networks signs on with Scala|date=25 June 2012|url=http://gigaom.com/2012/06/25/typesafe-pushes-scala-as-top-language-juniper-apparently-agrees/|publisher=gigaom.com|accessdate=8 June 2013|archive-date=2 June 2013|archive-url=https://web.archive.org/web/20130602054236/http://gigaom.com/2012/06/25/typesafe-pushes-scala-as-top-language-juniper-apparently-agrees/|url-status=dead}}</ref><ref>{{cite web|last=Ross|first=David|title=Scaling the Klout API with Scala, Akka and Play|url=http://corp.klout.com/blog/2012/10/scaling-the-klout-api-with-scala-akka-and-play/|accessdate=8 June 2013}}</ref>
there are also overview articles about it.<ref>{{cite web |lastlast1=Haines |firstfirst1=Stephen |titledate=Open2013-05-08 source|df=mdy Java projects: Akka|url=httphttps://www.javaworldinfoworld.com/javaworldarticle/jw2078775/open-05source-2013/130508java-osjpprojects-akka.html |publishertitle=javaworld.comOpen source Java projects: Akka |accessdatework=8[[JavaWorld]] June 2013|accessdate=2020-07-15}}</ref><ref>{{cite web|title=Java Magazin 6.13 |url=https://jaxenter.de/magazines/Java-Magazin-613 |publisher=jaxenter.de |accessdate=8 June 2013 |url-status=dead |archiveurl=https://web.archive.org/web/20130813144520/https://jaxenter.de/magazines/Java-Magazin-613 |archivedate=13 August 2013 }}</ref>
 
==See also==
* {{Portal-inline|Free software}}
 
==References==
Line 77:
 
[[Category:Java platform]]
[[Category:Free software programmed in Scala]]
[[Category:Software development kits]]
[[Category:Java development tools]]
[[Category:Actor model (computer science)]]
[[Category:Software using the Business Source License]]