17.02.2011 17:15
Jonas Bonér, manchen vielleicht bekannt für seine Arbeiten im Umfeld von JVMs und aspektorientierter Programmierung, hat die Version 1.0 seiner Actor-Bibliothek Akka veröffentlicht. In der Programmiersprache Scala geschrieben, greift die mit der Apache-2-Lizenz angebotene Software auf das schon Anfang der 70er-Jahre vorgestellte Actor-Modell zurück, das in Sprachen wie Erlang und damit der Telekommunikationsindustrie erfolgreich umgesetzt wurde. Mit Akka lassen sich in Java und Scala fehlertolerante und hochskalierende Applikationen zum Ausführen nebenläufiger oder paralleler Prozesse schreiben.
Akka bietet sowohl typisierte als auch untypisierte Aktoren und kombiniert das Speicherkonzept Software Transactional Memory (STM) mit Aktoren, um transaktionale Aktoren zu unterstützen. Es erlaubt das Suchen nach Aktoren in der Registry und unterstützt eine mit der Programmiersprache Oz vergleichbare Datenfluss-Nebenläufigkeit. Auch ermöglicht es die Serialisierung von Aktoren und ihren Referenzen.
Bei Version 1.0 wurde Wert darauf gelegt, dass die Java API nun nahezu kompatibel mit der Scala-Schnittstelle ist. Hinkte die Java-Entwicklung bisher ein wenig hinterher, erlauben zum Beispiel ein Modul für Spring und die typisierten Aktoren mittlerweile eine einfachere Verwendung unter Java. Weitere Plug-ins gibt es für OSGi, Apache Camel, JTA (Java Transaction API), Googles Guice-Framework, das Advanced Message Queuing Protocol (AMQP) und zahlreiche NoSQL-Datenbanken. Mehr über die anderen Neuerungen erfährt man über die Ankündigung.
Der folgende, der Projektseite entnommene Code zeigt die einfache Implementierung eines Servers inklusive des zugehörigen Clients:
// server code
class HelloWorldActor extends Actor {
def receive = {
case msg => self reply (msg + " World")
}
}
remote.start("localhost", 9999).register(
"hello-service", actorOf[HelloWorldActor])
// client code
val actor = remote.actorFor(
"hello-service", "localhost", 9999)
val result = actor !! "Hello" (ane)
Mehr zum Thema Parallel Computing Java