Open Source im professionellen Einsatz
Newsletter abonnieren
HEFTARCHIV | NEWS | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO

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.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Code-Vehikel Alternativen zu den populären Programmiersprachen
Konservierungsmittel Objektdatenbank Db4o für Java und Mono
Schön rechnen Grafisch anspruchsvolle Bilder programmieren mit Processing
Groß in Mode Workshop: Major Modes für (X)Emacs
Android: Der Rivale Googles offene Plattform für mobile Endgeräte - der erste Eindruck
Individuelle Lesehilfe Editoren mit eigenen Syntaxdefinitionen erweitern
Whitepaper
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

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
 

Impressum |Datenschutzerklärung  | Mediadaten  | © 2010Linux New Media AG
Linux New Media Websites
Deutschland: [Admin-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Linux Technical Review] [Ubuntu User]
Europa: [EasyLinux Polen] [Linux Magazine Polen] [Linux Magazine Spanien]
International: [Linux Magazine International] [Linux Pro Magazine] [Admin Magazine] [Ubuntu User] [Linux Magazine Brasilien] [EasyLinux Brasilien]