We’ve just released Akka 2.0 – a revolutionary step in programming for concurrency, fault-tolerance and scalability. Download it here.
Building on the experiences from the Akka 1 series, we take Akka to the next level— resilience by default, scale up and out by configuration, extensibility by design and with a smaller footprint.
A lot of effort has gone into this release, and it’s not just a version bump, it’s truly worthy of the name “Akka 2.0”. We’d like to take the opportunity to thank all of the excellent people that have made this release possible, to Jonas, to all committers, to all users and to the excellent Scala and Java ecosystems!
Highlights of Akka 2.0
Stats
700 tickets closed!
Code changes compared to Akka 1.3.1:
- 1020 files changed
- 98683 insertions(+)
- 57415 deletions(-)
Also including over 300 pages of reference documentation, and tons of ScalaDoc, available at http://doc.akka.io/docs/akka/2.0/.
Use the Akka Migration package to aid in migrating 1.3 code to 2.0.
Actors
- Distributable by design and asynchronous at the core
ActorSystems
lets you run multiple applications in isolationProps
are immutable configuration for Actor instancesActorPaths
makes it dead easy to address Actors- Enforced parental supervision gives you Error Kernel design for free
DeathWatch
makes it possible to observe termination of ActorsRouter
s unify what wasActorPool
s withLoadBalancer
s to form a flexible, extensible and transparent entity which quacks like anActorRef
Stash
, an API made by Phillip Haller to do conditional receives- Extensions enable you to augment
ActorSystem
s - Scale up and out through configuration
- API unification and simplification
- Excellent performance, up to 20 million msg/second on a single machine, see the blog article
- Slimmer footprint gives you around 2.7 million Actors per GB of memory
Dispatchers
Dispatcher
s are now configured in the configuration file and not the code, for easy tuning of deployed applicationsDispatcher
was previously known as ExecutorBasedEventDrivenDispatcherBalancingDispatcher
was previously known asExecutorBasedEventDrivenWorkStealingDispatcher
, is now work-sharing and you can configure which mailbox type should be usedPinnedDispatcher
was previously known asThreadBasedDispatcher
- Create your own
Dispatcher
s orMessageQueues
(mailbox backing storage) and hook in through config - Many different
MessageQueue
s:Priority
,Bounded
,Durable
(ZooKeeper, Beanstalk, File, Redis, Mongo)
###Remoting
- Completely transparent in user code
- Pluggable transports, ships with a scalable Netty implementation
- Create actors remotely using configuration or in code
TypedActors
- Completely new implementation built on top of JDK Proxies
- 0 external dependencies, so now in akka-actor
- Built as an Akka Extension
Futures & Promises
- Harmonized API with SIP-14 (big props to the EPFL team: Philipp Haller, Aleksandar Prokopec, Heather Miller and Vojin Jovanovic)
- Smaller footprint
- Completely non-blocking implementation
Akka STM
- Now uses ScalaSTM
Transactor
sAgent
s
EventBus
- A simple and easy to use API for Publish/Subscribe
Config
- Now using HOCON, extremely powerful and easy to use
- Big props to Havoc Pennington
Serialization
- Highly pluggable system for serializing objects
- Mappings go into configuration, no need to mix business logic and marshalling
- Built as an Akka Extension
Patterns
- “Ask/?” is now a
Pattern
— for Scala addimport akka.pattern.ask
, for Java useakka.pattern.Patterns.ask()
. gracefulStop
pipeTo
ExecutionContext
- One abstraction for asynchronous execution of logic
ømq
- An API for using Akka with ømq
- Huge thanks to Karim Osman and Ivan Porto Carrero
- Built as an Akka Extension
Brand new website, still at http://akka.io, huge thanks to Heather Miller for her outstanding work
Upcoming Releases
Things that will be released within the coming months:
- Akka Camel 2.0, codename “Alpakka”, with the excellent work of Raymond Roestenburg and Piotr Gabryanczyk
- Akka AMQP 2.0, with the excellent work of John Stanford
- Akka Spring 2.0, with the excellent help of Josh Long
Useful Links
- Akka Maven repository: http://repo.akka.io/releases
- Akka binary distribution: http://akka.io/downloads
- Akka 2.0 documentation: http://doc.akka.io/docs/akka/2.0/
- Issue tracker: http://www.assembla.com/spaces/akka/
- Akka mailing list: https://groups.google.com/group/akka-user
Akka is released under the Apache V2 license.
Happy hAkking!