Suche
Interview mit Mario-Leander Reimer

Auf ins polyglotte Abenteuer

Hartmut Schlosser

Wir lieben alle Java, aber andere Programmiersprachen haben auch schöne Kinder. Mario-Leander Reimer (QAware) nahm seine Zuhörer auf der JAX 2017 auf eine Reise ins polyglotte Abenteuer mit, in dem Sprachen als Werkzeuge beim Überleben helfen.

JAXenter: Die polyglotte Entwicklung stand auf der JVM vor einigen Jahren hoch im Kurs. Dann wurde es gefühlt etwas ruhiger, da JavaScript allen anderen, kleineren JVM-Sprachen davonzulaufen schien. Was sind für dich persönlich die Argumente, sich auch einmal die unbekannteren JVM-Sprachen anzuschauen?

Mario-Leander Reimer: Polyglotte Entwicklung stand vor einigen Jahren schon mal hoch im Kurs. Allerdings glaube ich war der Fokus und beabsichtigte Zweck damals ein anderer. Man wollte Java als Sprache ablösen, weil man unzufrieden mit Java als Sprache war, was die Syntax, Sprachmittel und die Typisierung angeht. Die große Mehrheit der Entwickler hat das scheinbar aber nicht so sehr gestört und ist bei Java geblieben. Und im Bereich der Scripting Sprachen kann kann ich mir gut vorstellen, dass JavaScript dazu beigetragen hat dass sich kleinere JVM-Sprachen hier nicht so recht durchgesetzt haben.

Kleinere und teils unbekanntere JVM-Sprachen haben ihre Nische gefunden.

Heute ist die Situation anders. Java ist als Universalsprache nach wie vor etabliert. Kleinere und teils unbekanntere JVM-Sprachen, wie etwa Golo, haben ihre Nische gefunden, sie decken oft einen ganz speziellen Use Case besonders gut ab, den Java nicht adressiert. Ich finde, diese speziellen Anwendungsgebiete einer Sprache gilt es als moderner Softwareentwickler zu kennen. Ein Blick über den Tellerrand lohnt immer. Man weiß nie in welchem Projektkontext dieses Wissen mal nützlich wird. Und man sollte definitiv mehr als nur einen Hammer in seiner Werkzeugkiste haben, um ein Problem lösen zu können.

JAXenter: Jetzt scheint der Pendel im Zuge des Microservices-Trends wieder mehr hin zur polyglotten Entwicklung auszuschlagen. Weshalb ist das so?

Mario-Leander Reimer: Im Zuge des Microservices-Trends kommt man als Cloud-nativer Entwickler zwangsläufig mit vielen Technologien in Berührung. Continuous Delivery, DevOps, die Nähe zur Infrastruktur und ein hoher Grad an Automatisierung sind hier weitere Treiber. Für jede Aufgabe, von der Entwicklung bis hin zum Betrieb einer Cloud-nativen Anwendung, gibt es eben häufig diese eine Sprache, die besser geeignet ist als alle anderen. Auch scheint mir die Zurückhaltung mal etwas Neues auszuprobieren im Zuge des Microservices-Trends gesunken zu sein. Ganz nach dem Vorbild von Netflix und anderen Cloud-Pionieren: Wenn das bei denen klappt, dann klappt das bei uns bestimmt auch.

JAXenter: Auf der JAX hast du dich ja auf ein polyglottes Abenteuer begeben und anhand eines Java-EE-Microservices gezeigt, wie ein stabiler polyglotter Technologiestack aussehen könnte. Welche Komponenten bzw. Sprachen kommen in diesem Stack vor?

Mario-Leander Reimer: Der in meinem Talk vorgestellte polyglotte Technologiestack ist highly opinionated. Jede der enthaltenen Sprachen oder Technologien ist in der Praxis erprobt. Ihre Kombination in einem einzigen Projekt hingegen ist als Experiment und Machbarkeitsstudie zu verstehen. Der komplette Quellcode ist auf GitHub zu finden. Hier also Stückliste:

  • Groovy und Gradle zur Definition der Entwicklungsumgebung sowie als Build-Tool
  • Java und Kotlin als primäre Implementierung-Sprachen des JEE Microservic
  • ECMAScript2015 + Babel + React für die Umsetzung der UI
  • Groovy und Spock für Unit-, Integrations- als auch Oberflächentests
  • Scala und Gatling für prägnante Last- und Performancetests
  • Ruby, Python und Go als mögliche Sprachen wenn es in Richtung Infrastruktur geht
  • Docker und Kubernetes zur Containerisierung und Orchestrierung
  • AsciiDoc und Java zur leichtgewichtigen Architekturdokumentation

JAXenter: Läuft man bei der Verwendung dieser vielen Technologien nicht Gefahr, die Sprachen immer nur halb zu beherrschen und somit nicht voll auszuschöpfen?

Mario-Leander Reimer: Ich glaube es ist wichtig hier zwischen Primär- und Sekundär- bzw. Tooling-Sprachen zu unterscheiden. Ersteres ist die Sprache – man beachte den Singular -, mit der ich den Anwendungskern umsetzte. Klar, diese Sprache muss man blind beherrschen, um sie voll ausschöpfen zu können. Und es ist ja nicht nur die Sprache selbst, sondern das ganze Ökosystem drum herum, das es zu beherrschen gilt.

Die Sprache für den Anwendungskern und das Ökosystem drum herum muss man blind beherrschen.

Bei Sekundär- und Tooling-Sprachen ist es meiner Erfahrung nach ausreichend Syntax sicher zu sein. Hier ist es viel wichtiger, die richtige Sprache für die jeweilige Aufgabe zu verwenden. Ein Beispiel: Ich muss ein kleines System-nahes Tool bauen, um den Entwicklungsprozess zu vereinfachen. Wäre Java hier meine erste Wahl? Wahrscheinlich nicht. Stattdessen würde ich Ruby, Python oder aktuell definitiv Go verwenden. Und dafür muss ich nicht gleich ein virtuoser Go-Entwickler sein, der jede Library und jeden Kniff kennt.

JAXenter: Was ist also der Knackpunkt polyglotter Programmierung?

Mario-Leander Reimer: Use the right tool for the job! Moderne Softwareentwicklung braucht eine abgestimmte Toolchain, um effizient, qualitativ hochwertige Software zu produzieren. Jede Sprache und Technologie hat Stärken in einer bestimmten Domäne. Diese gilt es zu kennen und wo möglich zu nutzen. Wie üblich, alles mit Augenmaß und gesundem Menschenverstand. Die optimale Toolchain ist stark abhängig vom jeweiligen Projekt-Kontext, dem Kundenumfeld und meinem Team. Einfach blind jede gerade angesagte Technologie in einem Projekt einzusetzen nimmt sicherlich kein gutes Ende.

JAXenter: Vielen Dank für das Gespräch.

Mario-Leander Reimer ist Cheftechnologe bei der QAware. Er ist Spezialist für den Entwurf und die Umsetzung von komplexen System- und Softwarearchitekturen auf Basis von Open-Source-Technologien. Als Mitglied im Java Community Process (JCP) ist sein Ziel, die Java-Plattform weiter zu verbessern und praxistaugliche Spezifikationen zu entwickeln.

.

Pirates of the JVM – die Infografik

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, JavaFX, Eclipse und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.