Interview mit Lukas Eder, Entwickler der Java-Mapping-Software jOOQ

Thorben Janssen im Gespräch mit Lukas Eder über seine Begeisterung für SQL und dessen Vorteile gegenüber weit verbreiteten OR-Mappern wie Hibernate.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Lesezeit: 5 Min.
Von
  • Thorben Janssen

Es gibt viele interessante Menschen in der Java-Community, die mit ihrem Engagement in Java Specification Requests (JSRs) und Open-Source-Projekten die Entwicklung vorantreiben. Einige möchte ich hier nach und nach vorstellen. Diesmal habe ich mit Lukas Eder, dem Gründer des Open-Source-Frameworks jOOQ, über die Vorteile und Einsatzgebiete von SQL gesprochen.

Thorben Janssen: Lukas, erzähle uns doch ein bisschen über dich. Wie bist du zur Softwareentwicklung gekommen, und was machst du heute?

Lukas Eder

Eder: Es war ein schicksalsträchtiger Moment, als mein Vater seinen ersten Arbeits-PC in den 80ern nach Hause brachte. Es war ein 80286 mit 7 MByte Festplatte. Nach ein paar unerfreulichen Experimenten mit MS-DOS ("was macht eigentlich format c: ?") habe ich darauf QBasic entdeckt, was mir eine wunderbare Welt eröffnete. Ich war damals wohl circa acht Jahre alt. Da gab's dann kein zurück mehr.

Heute bin ich, was ich schon immer hätte sein sollen: Unternehmer im Infrastruktursoftwarebereich, ich stelle also Software, Schulungen, Inhalte für Softwareentwickler her.

Janssen: Man sieht dich auf vielen Konferenzen über SQL sprechen. Wie bist du dazu gekommen, und was ist aus deiner Sicht der große Vorteil von SQL gegenüber weit verbreiteten OR-Mappern wie Hibernate?

Eder: Ich denke, es gibt zwei Typen von Softwareentwicklern beziehungsweise Softwarearchitekturen: datengetriebene und domänengetriebene.

Im datengetriebenen Umfeld steht die zustandslose Verarbeitung von Datenströmen im Vordergrund. Das Schöne an diesem Ansatz ist, dass Daten ständig im Fluss sind und von Applikationen nicht verändert, sondern nur transformiert und angereichert werden. In diesem Umfeld finden sich Techniken wie SQL, XSLT, XProc, Prolog, Datalog, Logdatenanalyse (wie mit Splunk), Realtime Analytics, BI, funktionale Programmierung, auch reguläre Ausdrücke oder auch die Unix-Pipeline wieder. Daten werden als Mengen im Sinne der Mengenlehre ganzheitlich und auch mathematisch verstanden. Es ist eine sehr schöne, elegante Welt der Datenverarbeitung.

Im domänengetriebenen Umfeld steht der (vom Anwender veränderbare) Zustand oder auch "Nebeneffek" (side effect) im Vordergrund. Dieser Zustand muss "leider" sein, denn er schafft erst den Mehrwert im Sinne der Fachlichkeit einer Anwendung. In diesem Umfeld ist Objektorientierung sehr stark und somit ORMs, die den Zustand zwischen Datenbank und Anwendung synchronisieren. (In diesem Zusammenhang gibt's ein tolles Interview ("Haskell is Useless") mit Simon Peyton Jones und Erik Meijer.)

SQL ist immer im ersten Umfeld besser geeignet, ORMs immer im zweiten Umfeld. Diesen Sachverhalt vermittle ich an Konferenzen. Viele Java-Entwickler sind frustriert darüber, dass nach der Objektorientierungsgehirnwäsche der 90er (und der damaligen J2EE-Gehirnwäsche) das erste Umfeld bei vielen Softwarearchitekten zu Unrecht komplett in den Hintergrund oder sogar in Vergessenheit getreten ist. Diese Entwickler wollen SQL (und jOOQ), und freuen sich sehr über meine Bestätigung ihrer Ansichten.

Janssen: Viele Java-Entwickler verwenden nur ungern JDBC und SQL. Wie kann das von dir gegründete Open-Source-Projekt jOOQ dabei helfen?

Eder: JDBC ist eine wunderbare Technologie. Sie hatte 1997 mit den unzähligen herstellerspezifischen Datenbankkommunikationsprotokollen und APIs aufgeräumt und einen einfachen Standard für die Protokollabstraktion eingeführt. JDBC ist der einzige absolut unumstrittene und konkurrenzlose Java-Standard.

Leider ist JDBC nicht mehr als das: eine Protokollabstraktion. Und damit viel zu "low level" für den täglichen Umgang mit SQL. Java-Entwickler haben (mangels Alternativen) JDBC und SQL meist gleichgesetzt. Wer aber oft mit PL/SQL oder T-SQL arbeitet, weiß SQL als sehr mächtige, typsichere Sprache zu schätzen. jOOQ macht genau dasselbe. jOOQ macht SQL für Java-Entwickler typsicher im Sinne einer Java/SQL-Sprachintegration, indem jOOQ SQL als interne domänenspezifische Sprache direkt in Java abbildet. Kurz: Dank jOOQ kann der Java-Compiler SQL-Befehle prüfen und Fehler bereits bei der Entwicklung feststellen.

Das ist nur das Hauptfeature von jOOQ. Es folgen unzählige Vorteile, die aus einer direkten Integration in die Java-Sprache hervorgehen, wie SQL-Transformation und -Standardisierung, Integration von SQL in Java 8 Streams usw.

jOOQ funktioniert übrigens auch wunderbar mit JPA zusammen, falls sowohl datengetrieben als auch domänengetrieben entwickelt wird!

Janssen: Du hast auch das Unternehmen Data Geekery gegründet, mit dem du kommerzielle Varianten von jOOQ anbietest. Worin liegt der Unterschied zur Open-Source-Version?

Eder: Die Open-Source-Variante (Apache-2.0-Lizenz) unterstützt nur Open-Source-Datenbanken; die kommerzielle auch kommerzielle Datenbanken. Aktuell werden neun Open-Source- und zwölf kommerzielle Datenbanken unterstützt. Somit können wir die Weiterentwicklung von jOOQ garantieren.

Janssen: Welche weitere Projekte verfolgst du?

Eder: Neben jOOQ vertreiben wir auch die Open-Source-Produkte jOOX, jOOR, jOOU und jOOλ. Insbesondere Letzteres erfreut sich stark wachsender Beliebtheit. Es erweitert Kern-APIs aus Java 8 und bietet weitere mächtige APIs für die funktionale Programmierung mit Java 8 Streams.

Janssen: Wo kann man dich finden, wenn man mehr über dich und deine Projekte erfahren möchte?

Eder: Auf jooq.org und insbesondere auch auf blog.jooq.org.

Janssen: Vielen Dank für das Interview und weiterhin viel Spaß und Erfolg mit jOOQ. ()