Java Magazin 7.14

Umfang: 124 Seiten

Erhältlich ab: 2014-06-04 00:00:00

Autoren: Tobias Bayer, Michael Dietz, Peter Friese, Arno Haase, Peter Hruschka, Raúl Kripalani, Wolfgang Imig, Arne Limburg, Jan-Frederic Markert, Felix Massem, Michail Mazo, Bernd Müller, Michael Müller, Achim Nierbeck, Lukas Pustina, Matthias Rothe, Lars Röwekamp, Sven Ruppert, Daniel Schneller, Silvia Schreier, Gernot Starke, Andre Steingress, Daniel Takai, Stefan Ullrich, Eberhard Wolff

Sie werden zu unserer Partnerseite entwickler.de weitergeleitet

Magazin

Bücher
Java SE 8 for the Really Impatient
Michael Müller

RoboVM – Offen für alle JVM-Sprachen
Interview mit Niklas Therning

Java Core

Kolumne: Java-Trickkiste
Referenzen mit Sonderstatus
Arno Haase

Titelthema

Clojure – Quo vadis?
Status quo und Ausblick auf die funktionale JVM-Sprache
Andre Steingress

Polyglotte Programmierung mit Clojure
Grenzenlose Freiheit
Silvia Schreier

SQL mit funktionaler Würze
Zugriff auf relationale Datenbanken in Clojure mit Korma
Tobias Bayer

Embedded

IoT mit Java 8 und Tinkerforge
Der Baukasten für die großen Kinder
Sven Ruppert

Datenbanken

Mehr als eine Datenbank
Anwendungsentwicklung im Java-Umfeld mit SAP HANA
Michael Dietz

Enterprise

Der Tod der Java Application Server
Sind sie noch zeitgemäß?
Eberhard Wolff

Kolumne: EnterpriseTales
Java 8 und Enterprise – Teil 2
Lars Röwekamp und Arne Limburg

Web

Fieldings Vermächtnis
Wer REST will, muss mit HATEOAS ernst machen
Stefan Ullrich

JavaScript-Vollzugriff mit JSFS
JavaScript-Zugriff auf alle Computerressourcen ohne Browser-Plug-ins
Wolfgang Imig

Webanwendungen mit Apache Karaf
Webvisualisierung im Zusammenspiel mit Pax Web
Achim Nierbeck

JSF und JPA im Tandem
Teil 2: Auflösen nicht initialisierter Proxies – Das Standardproblem der Kopplung
Bernd Müller

Responsive Design mit Liferay
Make it flow!
Michail Mazo

Integration lösen
Schlanke Systemintegration in der Praxis
Daniel Takai, Raúl Kripalani und Matthias Rothe

Cloud Computing

The Foreman
Ein Werkzeug für die Automatisierung des kompletten Serverlebenszyklus
Felix Massem und Jan-Frederic Markert

Mächtig flexibel
Grundlagen und technische Konzepte des Ceph-Storage-Clusters
Daniel Schneller und Dr. Lukas Pustina

Architektur

Kolumne: Knigge für Softwarearchitekten
Die Systematischverbesserin
Peter Hruschka und Gernot Starke

Android360

Versteckte Perle: uiautomator
Kleine Helferlein im Android SDK
Lars Röwekamp und Arne Limburg

Mobile

Äpfel zum Kaffee
RoboVM – iOS-Apps mit Java entwickeln
Peter Friese

Funktionale Programmierung geht uns alle an!

Ob wir es wollen oder nicht: Funktionale Programmierung geht uns alle an. Ja, sogar die Java-Sprache, die mit Lambdas in Version 8 funktionale Features einführt, springt auf den Zug auf. Daneben gibt es eine ganze Reihe von Sprachen, die sich für die funktionale Programmierung anbieten. Der ThoughtWorks-Experte Neal Ford setzt sich seit Langem für die Nutzung funktionaler Sprachen ein. Seiner Meinung nach sind sie deterministisch und wichtig für den Kern der Softwarearchitektur. Je weiter es in Richtung User geht, desto weniger funktional darf es werden. Das ist die berühmte Pyramide, die Neal vor vielen Jahren definiert hatte.

Clojure wird in diesem Zusammenhang nicht zuletzt wegen des Concurrency-Arguments genannt. Clojure hat sogar das Lambda-Zeichen im Logo implementiert! JAX-Speaker und Clojure-Fan Stefan Tilkov nennt die Sprachedas beste seit geschnitten Brot (ab Minute 17). Dabei ist Clojure im Gegensatz zu anderen JVM-Sprachen komplett funktional. Beispielsweise verwendet Clojure Funktionen auch, um Variablen zu definieren.

Dabei wirkt Clojure als Lisp-Dialekt vielleicht erst einmal befremdlich auf einen Java-Entwickler. Clojureund Java-Syntax unterscheiden sich deutlich. Die Datenstrukturen umfassen unter anderem Nummern, Strings, Keywords, Listen, Vektoren und Maps. Datenstrukturen in Clojure sind persistent.

Der Code sind die Daten, und damit bleibt es auch so übersichtlich. Oder wie Clojure-Erfinder Rich Hickey einst sagte: „You’ve just seen it.“ Clojure verfügt über eine sehr mächtige Standardbibliothek, die das Leben des Entwicklers produktiv macht. An dieser Stelle möchte ich übrigens den hervorragenden Talk von Hickey auf der JAX US 2012 empfehlen, in dem er von werteorientierter Programmierung in funktionalen Programmiersprachen spricht.

Unser aktuelles Titelthema soll Ihnen die Möglichkeit geben, eine eigene Meinung zu Clojure zu entwickeln. Los geht es mit einer Einführung in die Sprache, seinen Ursprüngen und der aktuellen Version im Artikel von Andre Steingress (Seite 14). Silvia Schreier analysiert daraufhin, wie gut sich Clojure mit Java verträgt und wann für Sie als Java-Entwickler der Einsatz von Clojure Sinn macht (Seite 24). Schließlich stellt Tobias Bayer das Projekt Korma vor, das Funktionen und Makros zu einer DSL für relationale Datenbanken kombiniert (Seite 32).

Funktional ohne Rücksicht auf Verluste?

Dass man die Nutzung funktionaler Programmierung auch kritisch hinterfragen muss, hat mein Kollege Hartmut Schlosser schon im Januar diskutiert. Zwar sei es wichtig, sein Repertoir um die funktionale Programmierung zu ergänzen, befreien könne uns das aber nicht von der Frage, welches Mittel am besten für welche Zwecke eingesetzt werden sollte. Man sollte Dinge natürlich nicht nutzen, nur weil sie gerade hip oder cool sind, sondern weil sie die richtige Lösung zur richtigen Zeit für die vorliegende Anforderung sind. Sicherlich wird es jetzt nach dem großen Release im März auch Java-8-Anwendungen geben, die mit Lambdas experimentieren, obwohl sie sie eigentlich nicht brauchen. Bilden Sie sich eine Meinung und beurteilen Sie selbst, ob Clojure oder funktionale Programmierung im Allgemeinen für Sie Sinn macht.
In diesem Sinne wünsche ich viel Spaß bei der Lektüre

Claudia Fröhling, Redakteurin