Akka: Simpler Scalability, Fault Tolerance, Concurrency & Remoting Through Actors by Viktor Klang
You know that I came across the name always, Viktor Klang, but I think always the Java Posse mailing list / Google forum along with Casper Bang. So here was the man in person and I had no idea before this session he was a committer for Akka. What a revelation Akka is for Scala! And my goodness you can also use Akka from good old Java. It is library framework in the best tradition of the concept.
(Viktor Klang discusses Akka)
Klang’s presentation style is really good. I mean really good. Decent pace, great eloquence, and for this talk in particular, the information structure was well organised and above average.
Akka is the framework closely associated Scala. They say that Akka is to Scala as Rails is to Ruby. I am not entirely in agreement with this, because Akka in this talk appears to be more its own thing. It has a lot of features going for it, including concurrency and execution through a four types of thread / actor execution model. Akka has a registry. The idea of passing messaging to actors, there are local and remote actors.
The actor registry single point where all actors are living and can be referenced. You can use the ActorRegistry to look up a actor by id.
ActorRef actors = ActorRegistry.actors()
Remote actors are there to enable fault distribution across JVM. This looks relatively easy to code as well. All one needs is to just start the RemoteNode. The current implementation is build on (Netty) NIO and ProtoBuf
Akka has Client managed supervision works across nodes. The client is responsibility for creating that actor on that server. The remote actor is instantiated through a proxy. For open source version you need to have the code on all of the servers. There is a proprietary Commercial server remoting solution that does feature provisioning, and therefore the code does not need to already install on the target server nodes.
With Server-managed remote actors you need to look up the actor by remote registry. There is a basic cluster endpoint for remote actors based on the JGroups.
Software Transactional Memory
Akka has it’s own version of a STM. The implementation I think is based on the clojure library, although I need to verify this: Akka atomic closures are nestable and therefore composable. Managed References separates identity and value
val ref = Ref(0)
ref alter( _ + 5)
// -> 5
Actors + STM == Transactors
In Akka there are also separate modules and the Transactors is featured through modules.
Spring Integration inside a configuration
Akka integrates well into Apache Camel. All you need to configure an Endpoint URI to file or a http.
The name suggests exactly that does do as it says on the tin. Imagine how one could hot swap in another actor for another, particularly if one trading process fails! Hmm, hmm, hmm sweet mama actors.
STM gives Atomic, Consistent, Isolated and therefore guarantee three axioms in the ACID principle. Akka gives the forth axiom in the ACID transaction principle Durability (persistence). Akka persistence supports the following frameworks: Redis, Cassanda, HBase, Voldemort, CouchDB, MongoDB, JTA and JDBC data stores and a whole lot more:
How to run Akka?
There are three ways to officially launch an Akka application and its microkernel:
- Add the JAR to the WEB-INF/lib folder and launch your Akka based Java EE web application
- Run it as a standalone microkernel
- Inside in OSGI container
- Above all I was really impressed by Viktor Klang Akka presentation one of the best of the conference in my opinion.
Extending Visual VM by Kirk Pepperdine
- Here was interesting technical session by a fellow Java Champion about extending the User Interface of the Visual VM in order to display additional sources of data. Visual VM is a NetBeans Rich Client Platform application. So if you already know NetBeans RCP then extending Visual VM is easy for you. The differences are that Visual VM has it own special UI components, including one that renders a quadrature. Four sub components in a 2 x 2 grid.
(The ever industrious Kirk Pepperdine, fellow Java Champion)
Once you have you have your UI sorted out, then you probably need to know JMX and MBeans in order to instrument your application. If you use Spring Framework as a dependency injection container then this is rather too easy to create MBeans in your application. Otherwise you must delve in Managed Instrumented MBeans at the API level. Mr Pepperdine had some good notes on MBeans and how to get instrumented data out of the JVM. It is also useful to instrument your applications. You can then extend Visual VM to examine specific resources, switch then on or off, or restart them, using a custom UI component.
Finally let me say that Kirk Pepperdine finished his talk early, ahead of schedule and had plenty of time for questions. Enough said.
JavaPosse Live by the JavaPosse
Awesome fun by the JavaPosse crew. Go and listen to the recording of the live 2010 episode.
Defective Java: Mistakes That Matter by Bill Pugh
Unfortunately this was overcrowded and I gave up attempting to get into the room.
Java Puzzlers – Scraping The Bottom of The Barrel by Joshua Bloch and Bill Pugh
Missing the previous session meant I could go early and get a comfy cinema seat to catch the last edition of the Java Puzzlers. Bloch and Pugh had six brand new (or may be not so new) Java Puzzlers to show us. It was a really good session I thought and it would help to have revised the current Puzzler’s book, because about “El” and “CafeBabe” already. I do not want to spoil it for those of you who attack the puzzles during Parleys.
(Aaron Houston, now of Adobe Community Outreach and Mattias Karlsson, fellow JC, lead organiser of JFokus)
The European JUG Leaders BOF
In short, I have video recording of most of this event, and I will be posting it on Vimeo.com at the earliest free-time opportunity.
JavaFX BOF by Stephen Chin
This BOF was about getting JavaFX / Visagé running on an Android mobile phone device. There is not a lot to really add. Stephen Chin supplied the hardware, 3 phones and USB cables. The rest of us downloaded Android SDK and a private copy of Visagé with Android runtime / wrapper classes, actually from Stephen Chin’s USB stick. At least one of us in the audience got Android and Visagé to play together nicely! (It was not yours truly. Sorry) The proof is the pudding as they say, in this picture:
(Google Nexus One smartphone belongs to Stephen Chin, and yes it does say, “Hello World JavaFX”. It demonstrates Visagé SDK and a very alpha wrapper framework running on an Android phone)
Please wait for Stephen Chin to announce on his blog.
This is Peter Pilgrim at Devoxx 2010. Out.
(L-to-R Max Bonobel, Me and Chris. This is the Congo JUG connection and finally a picture of yours truly at the Devoxx conference. Cheers fellows!)