Von Lettuce über CDI 2.0 zu Spring Data – ein Gespräch mit Mark Paluch

Neuigkeiten von der Insel  –  1 Kommentare

Es gibt viele interessante Menschen in der Java Community, die mit ihrem Engagement in Java Specification Requests (JSRs) und Open-Source-Projekten die Entwicklung immer weiter vorantreiben. Einige von ihnen möchte ich hier nach und nach vorstellen und mit ihnen über ihre Projekte sprechen. Dieses Mal habe ich mit Mark Paluch über sein Open-Source-Projekt Lettuce und seine neuen Aufgaben bei Pivotal gesprochen.

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

Mark Paluch: Ursprünglich dachte ich, dass eine Lehre als Koch genau das Richtige für mich wäre. Dann bekam ich einen Praktikumsplatz bei einer IT-Beratung und bin in die Welt der Softwareentwicklung eingetaucht. Das ist der Augenblick gewesen, in dem ich mein Hobby zum Beruf gemacht habe.

Mark Paluch, Entwickler im Spring-Data-Team

Als ich neun Jahre alt war, hat mein Vater einen Schneider-286er-Laptop-Computer gekauft, und seit der Zeit begann ich mich, mit Computern zu beschäftigen. Ein paar Jahre später entdeckte ich die GW-BASIC-Listings im MS-DOS-Handbuch. Und so begann ich, Listings abzuschreiben und zu verstehen, was da eigentlich vor sich geht. Und so ging es mit BASIC noch eine Weile weiter, bis ich mich in meiner Ausbildung von 1998 an mit C, C++ und Java beschäftigte.

Janssen: Was machst du privat, wenn du nicht gerade in der Java-Welt unterwegs bist?

Paluch: Ich bin ein großer Lego-Fan, und mein 6-jähriger Sohn ist immer ein guter Grund, um was Neues aus Lego zu bauen. Ich bin seit meiner Jugend fasziniert von Elektronik und baue ab und an zum Beispiel elektronische Kürbisse mit Annäherungssensor zu Halloween oder eine Weihnachtsbeleuchtung, die sich über das Internet steuern lässt.

Janssen: Du entwickelst und betreust das Open-Source-Projekt Lettuce (deutsch: Kopfsalat). Was ist das für ein Projekt, und was hat dich dazu bewegt, dich daran zu beteiligen?

Paluch: Lettuce ist der Redis-Treiber, den ich betreue. Das Projekt wurde initial von Will Glozer, dem Macher des HTTP-Benchmarktools wrk, gestartet. Ich suchte für ein Projekt nach einem Redis-Treiber, der mit Netzwerkunterbrechungen umgehen konnte. Es gab eine Reihe von Clients, doch Lettuce war damals für mich die beste Wahl. Zu der Zeit hatte Will aufgehört, das Projekt voranzutreiben, und Lettuce hatte einige Bugs, die mich am Projektfortschritt hinderten. Aus "mal schnell einen Bug fixen" wurde dann eine Dauerbeschäftigung.

Janssen: Welche Erfahrungen hast du mit Lettuce gemacht? Würdest du weitere Projekte starten oder dich daran beteiligen?

Paluch: Das Projekt hat rückblickend einen erheblichen Teil meiner freien Zeit eingenommen. Es ist eine Erfahrung, die mich weitergebracht hat. Ich habe sehr viele Facetten des Java-Memory-Modells kennen gelernt, insbesondere wenn es um Concurrency und Multithreading geht. Die angenehmste Erfahrung für mich war, als andere Entwickler angefangen haben, meinen Treiber zu nutzen und mir Feedback zu geben. Ich habe realisiert, dass ich nicht der einzige bin, der einen Redis-Treiber wie Lettuce benötigt, sondern dass es eine ganze Reihe anderer Menschen da draußen gibt, die ähnliche Anforderungen haben.

Mittlerweile schimpft meine Frau mit mir, dass ich so viel arbeite und am Abend so wenig Zeit habe. Deshalb versuche ich, keine neuen Projekte mehr anzufangen.

Janssen: Du arbeitest seit einer Weile für Pivotal. Wie bist du dazu gekommen und woran arbeitest du gerade?

Paluch: Es fing, ähnlich wie bei Lettuce, mit Bugfixes für Spring Data Module an. Nach einigen kleineren und größeren Pull Requests kam ich direkt mit dem Spring-Data-Team bei Pivotal in Kontakt. Vor zwei Jahren hatte Pivotal eine offene Stelle, und darauf habe ich mich beworben. Nachdem der Bewerbungsprozess dann geschafft war, fing ich im Spring-Data-Team an. Ich betreue vorwiegend die Redis-, MongoDB- und Apache-Cassandra-Module, wobei wir im Team gemeinsam an den Modulen arbeiten. Wir sind recht frei in dem, woran wir arbeiten, und so wirke ich auch an Modulen wie JPA und Spring Data REST mit. Aktuell arbeitet unser Team auf den Spring-Data-Kay-Releasetrain zu. Spring Data Kay hebt die meisten Module auf Version 2.0 und ist ein Major-Versionssprung, der einige Änderungen mit sich bringt.

Janssen: Kannst du uns einen kleinen Einblick geben, was wir in naher Zukunft an Neuerungen erwarten können?

Paluch: Ende Juni/Anfang Juli erscheint Spring 5, auf dem Spring Data Kay aufsetzt. Die größten Themen für Spring 5 sind der Wechsel auf Java 8 und Java EE 7, funktional-reaktive Programmierung und frühe Unterstützung für Java 9, Java EE 8 und HTTP/2. Spring 5 bringt mit WebFlux ein funktional-reaktives Web Framework, um nichtbockierende Webanwendungen zu entwickeln. Darüber hinaus bringt Spring 5 dedizierte Extensions für Kotlin mit, eine JVM-Sprache aus dem Hause JetBrains, die die Benutzung von APIs etwas bequemer machen können. Mit Java 8 als Baseline können wir volle Java-8-Unterstützung über unsere APIs anbieten.

Für MongoDB, Apache Cassandra, Redis und Couchbase bieten wir reaktiven Datenzugriff. Damit können reaktive Anwendungen von Anfang bis Ende implementiert werden, die nichtblockierende Treiber und asynchrones I/O handhabbar machen.

Wir haben in den einzelnen Modulen und auch auf globaler Ebene erhebliche Änderungen vorgenommen und den Kay-Releasetrain dazu genutzt, um Altlasten loszuwerden. Es sind auch einige inkompatible Änderungen dabei, wie der Wechsel auf die MongoDB Document API und die Umbenennung der CRUD-Repository-Methoden.

Janssen: Welche weiteren Projekte verfolgst du?

Paluch: Ich bin schon immer an allem Möglichem interessiert gewesen. Ich habe vor circa einem Jahr ein weiteres Client-Projekt gestartet: Spring Vault. Dies ist die Spring-Integration mit HashiCorps Vault, einem Service für Verschlüsselung und Verwaltung von Zugangsdaten zu Datenbanken im Microservice-Umfeld.

Ich habe beim CDI 2.0 JSR (JSR 365) mitwirken können, bei dem wir insbesondere asynchrone Events spezifizieren konnten. Ich erwarte gespannt das finale Release von CDI 2.0 und natürlich das Feedback, das wir zu unserer Arbeit bekommen.

Durch meine Arbeit an Lettuce helfe ich gelegentlich beim Jedis-Redis-Treiber aus. Dadurch hat sich eine blühende Zusammenarbeit zwischen unseren Projekten entwickelt, von der beide Communities und profitieren.

Project Reactor, die Reactive-Streams-Implementierung von Pivotal, bildet den reaktiven Unterbau von Spring und Lettuce. Reactor macht die funktional-reaktive Programmierung sehr handhabbar. Die Reactive Streams API ist Teil der zukünftigen Java 9 Flow API, was spätere Integrationen vereinfacht.

Janssen: Wo kann man dich finden?

Paluch: Üblicherweise in Weinheim, ansonsten auf GitHub oder Twitter. Ich spreche regelmäßig auf Konferenzen oder vor Java User Groups.

Janssen: Vielen Dank für das Interview und weiterhin viel Erfolg mit Spring, Lettuce und deinen weiteren Projekten.