Mendix-Plattform wechselt zu Scala: Warum Scala?

Hartmut Schlosser

Argument um Argument sammeln Befürworter wie Gegner der Programmiersprache Scala, um den seltsamen Krieg um den Erfolg einer Programmiersprache zu führen. Nachdem vor einigen Monaten das Contra mit Angriffen von Stephen Colebourne und der Rückkehr des Business-Networks Yammer nach Java taktische Erfolge erzielen konnte, punktet das Pro nun mit einem Bericht von Mendix-Plattform-Entwickler Arjen Hoekstra, der erleutert, warum Mendix für die eigene Sever Runtime auf Scala umstellen will.

Doch lassen wir das alberne martialische Vokabular beiseite und schauen uns lieber die Gründe an, die laut Mendix für Scala sprechen.

Zunächst einmal hat sich Java immer mehr als inadäquat erwiesen, schreibt Hoekstra, da es u.a. wegen des Fehlens funktionaler Konstrukte zu geschwätzig wurde. Wie ein alter Karren habe sich Java angefühlt, der sich nicht mehr zum Durchstarten eignete.

Auf der Suche nach einer Alternative haben sich folgende JVM-Sprachen angeboten:

  • JRuby
  • Jython
  • Clojure
  • Groovy
  • Kotlin
  • Ceylon
  • Fantom
  • Xtend
  • Scala

JRuby und Jython kamen nicht in Frage, da statische Typisierung eine unverzichtbare Anforderung darstellte. Das selbe gilt für Groovy und Clojure, wobei zu Groovy die vielzitierte Aussage des Groovy-Erfinders James Strachan bemüht wird, er hätte Groovy nicht erfunden, hätte er Scala gekannt:

I can honestly say if someone had shown me the „Programming in Scala“ book back in 2003, I’d probably never created Groovy“.

Clojure entferne sich semantisch ob seiner Lisp-Anlehnung doch sehr von Java, was eine Umstellung erschwere.

Kotlin und Ceylon, die „new kids on the block“, seien zwar interessant, aber noch nicht reif genug.

Fantom könne zwar einige Schwächen von Java beheben, beinhalte aber trotz statischer Typisierung auch dynamische Typen. Außerdem sei die Interoperabilität mit Java nicht nahtlos gegeben.

Xtend sei auch noch relativ neu und zum Zeitpunkt der Evaluierung noch nicht wirklich als viable Sprachalternative aufgefallen. Erst das 2.1 Release im November 2012 brachte den Mendix-Entwickler auf Xtend. Hoekstra hat noch einige Fragen zu klären: Xtend generiert direkt Java-Code, anstatt nach Bytecode zu kompilieren – führt dies nicht zu Transformationsproblemen, wenn der mit Xtend generierte Java-Code verändert wird? Wie werden diese Änderungen in Xtend widergespiegelt? Und ist es sinnvoll, den Code in eine Sprache zu übersetzen (Java), die man ja gerade vermeiden will?

Und dann Scala:

Hoekstra attestiert Scala eine gute Interoperabilität mit Java. In Scala lassen sich problemlos Java-Klassen, Interfaces und Methoden aufrufen – und vice versa. Funktionale Aspekte machen Scala mächtiger und präziser als Java. Nach ersten Experimenten mit Scala kam gar der Spaß am Programmieren zurück. Jedes neu entdeckte Sprachfeature erlaubte es, ein Problem noch eleganter zu lösen. Die Lines of Code konnten um 50% reduziert werden, insgesamt sei der Code lesbarer geworden.

Soweit der Sprachvergleich, der wohlgemerkt vor der eigentlichen Arbeit durchgeführt wird – dem graduellen Ersetzen von Java-Code durch Scala in der Mendix-Plattform. Der Yammer-Erfahrungsbericht hatte nach dieser Arbeit angesetzt, und Probleme wie Versionierung, Tooling-Support und eine steile Lernkurve angesprochen. Seien wir gespannt, wie nach einigen Monaten das Fazit bei Mendix ausfällt. Arjen Hoekstra hat angekündigt, weiterhin über die Praxis mit Scala zu berichten.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

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