Stellenweise sehr gut, stellenweise nicht ausgereift und zu knapp

December 01, 2011

Die Programmierung von parallelen und nebenläufigen Programmen mit Shared-Memory und Threads ist kompliziert und sehr fehleranfällig. Als Lösungsansätze wurden z. B. Software-Transactional-Memory (STM), Message-Passing-Architekturen und Aktoren-Modelle entwickelt. In “Programming Concurrency on the JVM” werden diese für die Java-Plattform vorgestellt.

In der Java Welt gibt es für die thread-basierte Shared-Memory-Entwicklung ab Java 5 bereits das Paket java.util.concurrent. Dieses wird nach einer Einführung in die nebenläufige Programmierung vom Autor auszugsweise auf ca. 40 Seiten vorgestellt. Hierbei stellt der Autor die Probleme gut dar, die durch Shared-Memory entstehen. Wer allerdings detailliertere Informationen sucht, sollte “Java Concurrency in Practice” von Goetz lesen (dieses steht auch so im Buch).

In Kapitel 6 erweckt der Autor bei der Einführung von STM den Eindruck, dass diese vom Entwickler der Sprache Clojure erfunden wurde. Das ist nicht der Fall und in einem wissenschaftlichen Buch muss hier kurz auf die Entwicklung von STMs eingegangen werden.

Allerdings ist dieses nicht die einzige Stelle, wo sich der Autor recht knapp hält. Man sieht an vielen weiteren Stellen Hinweise wie “Wer mehr wissen will, schaut doch besser in der Dokumentation nach”.

Schön ist wiederum das Kapitel 7 in dem Beispiele von STM in Clojure, Groovy, Java, JRuby und Scala besprochen werden.

Aktoren werden in Kapitel 8 mit Hilfe der Akka-Bibliothek erklärt. Hier werden Java und Scala benutzt und ich habe mich die ganze Zeit gefragt, warum der Autor auch in Scala Akka benutzt und nicht die von Scala bereitgestellten Aktoren. Aber am Ende von Kapitel 9, in dem es weitere Beispiele für Aktoren in Groovy, Java und JRuby gibt, wurde ich dann aufgeklärt: Akka ist wesentlich performanter.

Auch hier wird ein Schwachpunkt des Buches sichtbar: es sieht an vielen Stellen so aus, als ob das Buch unter Eile fertiggestellt wurde. Insbesondere die Stellen für die Benutzung von Multiverse mit Java sind mir nicht klar geworden. Das liegt wahrscheinlich daran, dass für Multiverse kein eigenes Kapitel mit Beispielen vorhanden ist. So blieb mir der Satz “Akka uses Multiverse’s Clojure-style STM for Java code” auf S. 103 ohne das Lesen der Multiverse-Doku unverständlich.

Eine weitere schwierige Stelle ist die Vorstellung der Clojure-STM auf S.94. Auch wirkt der Autor plötzlich nicht mehr kritisch, sondern sehr euphorisch und ich hatte für einen Augenblick das Gefühl, der Autor ist dem Thema STM nicht kritisch genug gegenüber eingestellt.

Da man das Buch aber ansonsten recht gut lesen kann und auch sehr viel über Aktoren und STM lernt, gebe ich 3 Sterne.

Fazit: Stellenweise sehr gut, stellenweise nicht ausgereift und zu knapp.

  • Venkat Subramaniam
  • Programming Concurrency on the JVM
  • Pragmatic Programmers
  • 2011

Siehe auch die Renzension bei Amazon.