Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2010  »  01  »  Nebenläufig  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© Ina Van, 123rf.com

Concurrent Programming mit Clojure

Nebenläufig

von Stefan Kamphausen
Erschienen im Linux-Magazin 2010/01

Die Welt der Programmiersprachen hat seit zwei Jahren eine neue Bewohnerin: Die funktionale Sprache Clojure spezialisiert sich auf Programme mit Multithreading und bietet dank Java-Verwandtschaft trotz ihres jugendlichen Alters eine umfangreiche Bibliotheken-Landschaft.

Mit Intels Core-Mikroarchitektur sind Rechner mit mehreren CPUs oder Prozessorkernen in Firmen und Privatwohnungen massenhaft angekommen. Dieser Entwicklung muss sich die aktuelle Generation von Programmierern stellen. Programme, die in mehreren Threads laufen, sind die Antwort. Derzeit entstehen Bibliotheken, die notwendige Funktionen in bekannten Programmiersprachen nachrüsten, es tauchen aber auch ganz neue Programmiersprachen auf, die diese Fähigkeit mitbringen.

Ein neuer Spieler auf dem Feld der Werkzeuge ist die Programmiersprache Clojure [1]. Die Grundzüge, die Sprachdesign und Motivation gleichermaßen beschreiben, sind schnell zusammengefasst: Concurrent Programming und die Java Virtual Machine. Concurrent Programming nennt man das Programmieren in einem Umfeld, in dem separate Programme oder Threads zusammenwirken und auf Ressourcen zugreifen, die sie sich teilen müssen. Dabei dürfen keine inkonsistenten Zustände durch die konkurrierenden Zugriffe entstehen. Clojure begegnet dem durch einen funktionalen Ansatz, spezielle Datenstrukturen und sichere Zugriffsmechanismen auf die Ressourcen.

Eine Plattform, die das Ausführen mehrerer Threads explizit unterstützt, ist die Java Virtual Machine (JVM), die es in Versionen für viele Betriebssysteme gibt. Zudem existiert bereits eine stattliche Menge an Bibliotheken in Java, die in Clojure sofort und ohne Integrationsaufwand verwendbar sind. Clojure erzeugt beim Kompilieren Java-Bytecode, sogar ».class«-Dateien lassen sich erstellen. Die JVM als Zielplattform ist kein Implementations-Detail, sondern ein Feature.

Sprache samt Zubehör

Der Erfinder von Clojure, Rich Hickey, stellt Clojure unter der Eclipse Public License 1.0 zum Download bereit. Wer Clojure unkompliziert testen möchte, lädt »clojure_1.0.0.zip« von [2] herunter, entpackt es in einem beliebigen Verzeichnis und startet zum interaktiven Programmieren die Read Eval Print Loop (siehe Kasten "REPL"). Aus Komfortgründen empfiehlt sich die Integration von Clojure in eine IDE. Lösungen für Netbeans [3], Emacs ([4], [5]), Vim [6] und Eclipse [7] sind verfügbar. Wer die aktive Entwicklung von Clojure verfolgen möchte, begibt sich zu Github [8].

Erste Experimente

Clojure startet nach der Eingabe von »java -jar clojure.jar clojure.lang.main« in einem Terminal und präsentiert dem Anwender einen Prompt, an dem er Befehle eingeben kann, die er mit der [Return]-Taste abschickt. Größere Mengen an Quellcode schreibt der Programmierer besser in einer separaten Datei, deren Inhalt er dann an der REPL mit Copy & Paste einfügt. Es gibt auch einen Befehl, um eine ganze Datei zu kompilieren und ihren Inhalt zu laden: »(load-file "file.clj")«.

In alter Tradition ist "Hello World" das erste Beispiel:

user=> (println "Hello World")
Hello World
nil
user=>

In diesem kurzen Codestück zeigen sich bereits wichtige Eigenschaften von Clojure. Zum einen ist das die Lisp-artige Syntax. Neueinsteigern sei versichert, dass die Klammern in der Regel nach wenigen Tagen nicht mehr stören und später unverzichtbar erscheinen. Befehle in Clojure werden in runden Klammern eingefasst, das erste Element einer Liste von Elementen in einem Klammernpaar ist der Befehl, alle folgenden Elemente sind dessen Argumente. In diesem Beispiel lautet der Name des Befehls »println«, was »System.out.println« in Java entspricht, und das einzige Argument ist der String »Hello World«. Darunter ist die Ausgabe zu sehen. In der dritten Zeile gibt Clojure »nil« aus, was »NULL« in Java entspricht, um danach wieder einen neuen Prompt anzubieten. Dabei ist »nil« der Rückgabewert des Befehlsaufrufs.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Code-Vehikel Alternativen zu den populären Programmiersprachen
Android: Der Rivale Googles offene Plattform für mobile Endgeräte - der erste Eindruck
Konservierungsmittel Objektdatenbank Db4o für Java und Mono
Schön rechnen Grafisch anspruchsvolle Bilder programmieren mit Processing
Wissenstransfer Aussichtsreiche Würfelkandidaten unter der Lupe
Groß in Mode Workshop: Major Modes für (X)Emacs
Whitepaper
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (4)
von
ska,
16.03.2010 23:28
Buch angekündigt
Das in der Autoren-Info angedeutete Buch hat mittlerweile eine Webseite: http://www.clojure-buch.de
von
ska,
09.12.2009 15:06
Re: Autsch
Hallo Joschi,

der Teil war humorvoll gedacht, hat aber scheinbar nicht geklappt. Wir haben uns doch zu sehr an Smilies im Text gewöhnt, und Texte ohne diese Auszeichnung verfehlen dann ihre Wirkung.
von
joschi,
06.12.2009 13:58
Autsch
"einfache alte Java-Objekte"

Dem geneigten, fachkundigen Leser ist zwar klar, dass POJOs (plain old Java objects) gemeint sind, allerdings war diese mit dem Holzhammer erzwungene Übersetzung wirklich unnötig.
von
FB,
03.12.2009 16:46
Fehler im Link
Der Link zum ausführlichen Artikel ist fehlerhaft. Richtig ist
http://java.ociweb.com/mark/clojure/article.html