JAX TV
Session von der JAX 2010: Exploring alternative Concurrency Paradigms on the JVM
von Jonas Bonér
Writing concurrent programs in Java is hard and writing correct concurrent programs is even harder. What should be noted is that the main problem is not concurrency itself but the use of mutable shared state. Reasoning about concurrent updates to, and guarding of, mutable shared state is extremely difficult. It imposes problems like dealing with race conditions, deadlocks, live locks, thread starvation etc. It might come as a surprise to some people but there are alternatives to the so-called "Shared-State Concurrency" (that has been adopted by C, C++, Java and has become the default industry standard way of dealing with concurrency problems). In this talk we will discuss the importance of immutability and explore alternative paradigms such as Dataflow Concurrency, Message-Passing Concurrency and Software Transactional Memory (STM). We will have a pragmatic discussion on the drawbacks and benefits with each paradigm and through hands-on examples show you how each one, in its own way, can raise the abstraction level and give you a model that is much easier to reason about and use. We will show you how, by choosing the right abstractions and technologies, you can make hard concurrency problems close to trivial. All discussions are driven by examples using state-of-the-art implementations available for the JVM.
Mehr JAX TV finden Sie auch online unter www.jaxenter.de/mediapool
Die Highlights
Gradle 0.9 RC 3
Gradle ist ein frei verfügbares Build-Tool, das auf einer Groovy-basierten Domain Specific Language aufbaut. Gradle versteht sich als Toolkit zum Bauen von Software-Projekten. Insbesondere die Umsetzung von komplexen Build-Prozessen mit sehr individuellen und unvorhersehbaren Anforderungen ist möglich. Gradle kann verschiedene Arten von Projekten bauen, darunter Java, Groovy und Scala. Es unterstützt Multi-Projekt-Builds und verfügt über einen Wrapper für Maschinen, auf denen Gradle nicht installiert ist.
Git 1.7.3
Git ist ein Versionskontrollsystem. Das neue Release beinhaltet unter anderem ein überarbeitetes User Interface (git-gui), Dateianzeige bei fehlerhaften Objekten sowie zahlreiche Bugfixes.
Arquillian
Mit dem JBoss-Projekt Arquillian lässt sich Anwendungscode in einem Embedded-Container testen. Arquillian soll als Vorlage für die Erstellung von Integrationstests dienen, neben Embedded sind auch Remote-Container als Option verfügbar. Installation von Arquillian in Eclipse:
-
Wenn Eclipse gestartet ist, kann man über Help -> Install New Software.. das Plug-in Arquillian herunterladen und installieren.
- Dort klicken Sie auf Add...
- Über Add.. wird bei Location die Updateseite: für Anonymous SCM http://anonsvn.jboss.org/repos/common/arquillian/trunk und für Committer SCM https://svn.jboss.org/repos/common/arquillian/trunk hinzugefügt. Tragen Sie unter Namen einfach Arquillian ein und klicken Sie auf OK.
- Um das Plug-in im darunterliegenden Fenster auswählen zu können, muss der Haken angeklickt werden.
Weitere Inhalte
Maven 3.0
Maven 3.0 stellt eine rückwärtskompatible Neuauflage des Buildmanagement-Systems Maven 2.x dar, die über ein einfacheres Programmiermodell und ein komplett neu implementiertes System zur Auflösung von Artefakten verfügt. Intern wurde das Softwareframework Plexus durch Google Guice als IoC Container ersetzt. Durch die Integration des Projekts Polyglot Maven ist es möglich, Build-Konfigurationen nicht nur in XML, sondern auch mittels anderer Sprachen wie Groovy, Scala, Clojure oder Ruby durchzuführen.
Apache Wicket 1.4.13
Apache Wicket ist ein komponentenorientiertes (POJOs-based) Webframework für die Programmiersprache Java. Wicket Pages können unter Verwendung von HTML-Design-Tools getestet, vorgezeigt und später einer Revision unterzogen werden. Außerdem gibt Wicket die Möglichkeit, ein einfaches und schnelles Testprojekt aufzusetzen. Dies ist das neunte Maintenance-Release der 1.4.x-Serie, das einige Bugfixes beinhaltet.
Subversion 1.16.13
Subversion (SVN) ist eine Versionsverwaltungssoftware, bei der die Versionierung über ein zentrales Repository erfolgt. Subversion gilt als Weiterentwicklung von CVS, die aktuelle Version schließt eine Sicherheitslücke.
Mercurial 1.7
Mercurial ist ein verteiltes Sourcecode-Managementsystem, das für die Verwaltung von großen Projekten geeignet ist. Die Bedienung erfolgt über die Kommandozeile, wobei alle Kommandos mit hg beginnen. Diese Version benötigt Python 2.4 oder höher.
Bazaar
Bazaar ist eine Software zur Versionsverwaltung von Quellcode. Bazaar ist in Python geschrieben. Bazaar bietet die Verwaltung von Entwicklungszweigen, es kann von einem einzelnen Entwickler mit mehreren Entwicklerzweigen auf einem lokalen System genauso benutzt werden wie von Teams, die an verschiedenen Orten an einem Projekt zusammenarbeiten.
Monotone 0.99.1
Monotone ist ein verteiltes Versionskontrollsystem. Es bietet ein effizientes Peer-to-Peer-Synchronisationsprotokoll, Unterstützung der Internationalisierung. Es bietet kryptographische Versionsbenennung, Client-Side-RSA-Zertifikate und SHA-1-Hashes zur Identifikation einzelner Dateien.