Presentation: "Modeling Concurrency with Actors in Java - Lessons learned from Erjang"
Track:
Cool Stuff with Java
Time: Friday 14:00 - 15:00
Location: St. James's Suite
Abstract:
Download slides
For the past few months I have been working passionately on Erjang, a JVM-based virtual machine for Erlang [see http://javalimit.com]. In this talk, I will discuss (a) why I am doing this, and (b) how Erjang works. These are two very different talks in one - but let me explain why you should come anyway:
Observation A: Looking just a few years down the road, concurrency modeling (and programming) will be increasingly important, driven by both new hardware architectures (multi-core), and our increasing use of networked services (SOA if you want).
Observation B: Recently, I have been meeting a lot of Erlang people, and I sense clearly that they have this enviable ability to think intuitively about parallel programming. It corresponds somewhat to the way we "object heads" think intuitively about classes and objects - just in terms of processes.
They model things with processes! If they can do it, everyone else should be able to do it too. So that is my mission: bring the intuition of Erlang programmers to the main stream programming scene. The first part of the talk is about that: what does it mean to be modeling with processes. What have I - so far - learned about how Erlang programmers think.
BUT! I think all this requires some new tools. You cannot just take Java, and start applying this kind of thinking. Or, that will be difficult at least. I'm totally a Java-head, so what can we do? We need to adopt new platforms, and there are a number of those starting to appear in context of Java; most notably Scala actors is getting a lot of attention.
So to figure all this out, I started *porting Erlang to the JVM* [see http://erjang.org], and that has been a really interesting exercise, and I would like to take you through some of the issues, problems and solutions that arise from that challenge. So, this second part of the talk is really "looking at Erlang from a Java perspective", and I will take you though the various major language constructs in Erlang, and show how that maps to Java in the generated code. For me, this has been an excellent way to really learn Erlang, and I hope to convey some of what I learned to you too.
Observation A: Looking just a few years down the road, concurrency modeling (and programming) will be increasingly important, driven by both new hardware architectures (multi-core), and our increasing use of networked services (SOA if you want).
Observation B: Recently, I have been meeting a lot of Erlang people, and I sense clearly that they have this enviable ability to think intuitively about parallel programming. It corresponds somewhat to the way we "object heads" think intuitively about classes and objects - just in terms of processes.
They model things with processes! If they can do it, everyone else should be able to do it too. So that is my mission: bring the intuition of Erlang programmers to the main stream programming scene. The first part of the talk is about that: what does it mean to be modeling with processes. What have I - so far - learned about how Erlang programmers think.
BUT! I think all this requires some new tools. You cannot just take Java, and start applying this kind of thinking. Or, that will be difficult at least. I'm totally a Java-head, so what can we do? We need to adopt new platforms, and there are a number of those starting to appear in context of Java; most notably Scala actors is getting a lot of attention.
So to figure all this out, I started *porting Erlang to the JVM* [see http://erjang.org], and that has been a really interesting exercise, and I would like to take you through some of the issues, problems and solutions that arise from that challenge. So, this second part of the talk is really "looking at Erlang from a Java perspective", and I will take you though the various major language constructs in Erlang, and show how that maps to Java in the generated code. For me, this has been an excellent way to really learn Erlang, and I hope to convey some of what I learned to you too.