Scala Days Europe 2018: Blick nach vorn

In schöner Regelmäßigkeit machen die Scala Days Europe Halt in Berlin. Nach 2014 und 2016 lockte die Konferenz dieses Jahr zum dritten Mal Scala-Interessierte in die deutsche Hauptstadt.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Scala Days Europe 2018: Blick nach vorn
Lesezeit: 9 Min.
Von
  • Lutz Hühnken
Inhaltsverzeichnis

Die Scala Days gehen in das neunte Jahr und haben in dieser Zeit ihre eigenen Traditionen entwickelt. Unter anderem beginnt jede Veranstaltung mit einer Keynote des Scala-Erfinders Martin Odersky und endet mit einer Panel-Diskussion. Dazwischen gab es auch dieses Jahr wieder zwei Tage voller Vorträge in vier Tracks. Mit nahezu 900 Teilnehmern waren die Scala Days Europe 2018 ausverkauft.

Odersky eröffnete die Konferenz am Vortag des eigentlichen Programms mit einem Ausblick auf das für 2020 in Aussicht gestellte Scala 3 und die geplanten Versionen bis dorthin. Die dritte Generation der objektfunktionalen Programmiersprache soll einige Ecken und Kanten der Vorgängerversionen glätten, und Scala soll leichter zugänglich werden. Gleichzeitig wird es neue Features haben und beispielsweise über Union- und Intersection-Types verfügen, wie sie auch in TypeScript bekannt sind.

Martin Odersky eröffnete traditionell die Scala Days Europe 2018.

Andere Änderungen betreffen eher Interna: Das Typsystem wird vereinheitlicht und komplett auf Dependent Object Types basieren, ohne dass sich an der Syntax viel ändert. Odersky hob besonders die ebenfalls neuen Implicit Function Types hervor, die dem Compiler erlauben, bestimmte Informationen oder Fähigkeiten aus dem Kontext zu ermitteln. Sie vermeiden Boilerplate-Code, und eine denkbare Einsatzmöglichkeit ist die Implementierung eines Effektsystems, das zur Übersetzungszeit die Unterscheidung zwischen rein funktionalem und mit Seiteneffekten behaftetem Code ermöglicht.

Für die Koordination der Scala-Entwicklung verantwortlich sind das ScalaCenter, eine Einrichtung der Eidgenössischen Technischen Hochschule in Lausanne (EPFL), und die Firma Lightbend, bei der die Hauptentwickler des Compilers beschäftigt sind. Den geplanten Pfad von der aktuellen Version 2.12 bis zur Version 3 präsentierte der Leiter des Lightbend-Teams Adriaan Moors. Um den Übergang zur nächsten Major-Version flüssig zu gestalten, wird die nächste Version 2.13 eine neue Collections-Library einführen, die sich beim großen Versionssprung nicht mehr ändern wird. Anschließend ist noch eine Version 2.14 geplant, die viele derzeit als überholt (deprecated) gekennzeichnete Konstrukte entfernen und einige für Version 3 entwickelte Features enthalten wird.

Die Sprecher betonten, dass sie ein Python-3-Szenario unbedingt vermeiden wollen. Als Python 3 im Jahr 2008 herauskam, war es nicht kompatibel zur Vorgängerversion. Das Portieren der Bibliotheken verlief schleppend, und viele Entwickler zögerten lange beim Umstieg auf die neue Version.

Auch die beiden Konferenztage eröffnete jeweils eine Keynote. Tomas Petricek, der am Londoner Alan Turing Institute dazu forscht, öffentliche Daten für interessierte Anwender zugänglicher zu machen, schlug den Bogen vom Begriff des "Funktionalen" in der Programmierung zu dem in der Architektur – wohlgemerkt nicht in der Softwarearchitektur, sondern dem Hausbau.

In einer weiteren Keynote am letzten Konferenztag outete sich Zalando-CTO Eric Bowman als Scala-Fan und pries die Schönheit der Sprache. Zalando setzt auf ein polyglottes Umfeld. Die Entwicklungsteams genießen weitgehende Freiheiten bei der Auswahl der Implementierungssprache, wobei ein interner Technology Radar Orientierungshilfe gibt. Neben einem Überblick, welche Rolle Scala im Unternehmen spielt, gab er einen unterhaltsamen Einblick, welche Herausforderungen die große Autonomie der Teams für ihn als deren Chef mit sich bringt.

Mehrere Vorträge beleuchteten das Erzeugen von nativem Code aus Scala. Wie Java wird Scala üblicherweise in plattformunabhängigen Bytecode kompiliert und zur Laufzeit vom Just-in-Time-Compiler der Java Virtual Machine (JVM) in Maschinencode übersetzt. Für lang laufende (Server-)Anwendungen ist die damit verbundene Start- und Aufwärmphase der JVM vernachlässigbar. Für Kommandozeilentools, im Embedded-Bereich oder für Serverless-Funktionen, sollten Entwickler sie jedoch vermeiden.

Zwei Vorträge beleuchteten das Projekt Scala Native, das das direkte Übersetzen in Maschinencode erlaubt. Über passende Bindings – Dateien, die für native Bibliotheken eine virtuelle Scala-Aufrufsyntax definieren – lassen sich auch Plattformbibliotheken einbinden, beispielsweise für die GUI-Entwicklung oder die GPU-Verwendung über CUDA. Einen alternativen Ansatz bietet Oracles neue virtuelle Maschine GraalVM. Statt den Sourcecode direkt in Maschinencode zu übersetzen, geht sie weiter den Weg über den Bytecode. Diesen übersetzt sie aber komplett vor der Ausführung mit einem Ahead-of-Time-Compiler. Die GraalVM war über die eindrucksvolle Präsentation hinaus bei vielen Konferenzteilnehmern Gesprächsthema.

Neben Java Bytecode und nativem Code lässt sich Scala auch in ECMAScript transpilieren. Auch mit diesem Thema beschäftigen sich gleich mehrere Vortragende. Besonders bemerkenswert war der Beitrag von SAP, der zeigte, wie das Unternehmen mit Scala.js und Scalas Makrosystem Applikationen für S4/HANA und die Fiori-Oberfläche in Scala entwickelt.

SAP berichtete von den Erfahrungen mit Scala für die CloudPlatform.

SAP war nicht der einzige Vertreter, der den pragmatischen Blick der Industrie im Programm vertrat. Automobilhersteller Audi erklärte, wie die Entwickler Scala einsetzen, um Produktionsprozesse zu optimieren. Aus dem Finanzdienstleistungsbereich waren die ING-DiBa und Morgan Stanley vertreten, die beide von ihren überwiegend positiven Erfahrungen mit funktionaler Programmierung berichteten.

Die funktionale Programmierung in möglichst reiner Form und unter voller Ausnutzung eines statischen Typsystems hat ohnehin viele enthusiastische Verfechter in der Scala-Welt. Wie in den Vorjahren gab es bei den diesjährigen Scala Days in fast jedem Slot einen Vortrag aus dem Bereich funktionale Programmierung. Das Themenspektrum war dabei umfassend. Beim Einstieg half eine Einführung in die mathematische Kategorientheorie und in die praktischen Anwendungsfälle von Kategorien wie Monoid, Functor und Applicative Functor.

Hinzu kamen zwei Vorträge mit Ansätzen, die Typsicherheit bei der Kommunikation via Protocol Buffers und mit Graphdatenbanken zu erhöhen. Wem das noch nicht reichte, der konnte sich mit der Programmierung auf Typlevel mit Typen höherer Ordnung und Literal Types beschäftigen. Wer noch dachte, Scala sei nur "Java mit etwas kompakterer Syntax", dürfte ob der Einblicke in das mächtige Typsystem der Sprache eines Besseren belehrt worden sein.

Bill Venners, der Autor des ScalaTest-Frameworks und Koautor von "Programming in Scala", setzte dem rein funktionalen Ansatz in seinem gut besuchten "Effective Scala"-Vortrag ein hybrides Modell entgegen. Er zeigte eine friedliche Koexistenz von imperativem und funktionalem Code, wobei die Teile sauber getrennt blieben. Visualisiert hat er das Modell zur allgemeinen Belustigung als Berliner: Funktionaler Teig, mit imperativer Marmeladenfüllung und Zuckerguss.

Bill Venners ließ sich bei der Namensgebung von Gebäck und Geschichte inspirieren.

Ein weiterer Themenblock war das Scala-Ökosystem, also Werkzeuge und Bibliotheken, die nicht zum Kern der Programmiersprache gehören, sich aber im Werkzeugkasten der Entwickler befinden. Die jüngsten Entwicklungen und Zukunftspläne des Build-Tools sbt wurden ebenso präsentiert wie die des Aktoren-Frameworks Akka, das auch in der Java-Welt eine gewisse Verbreitung hat. Neben der Entwicklung neuer Funktionen wie Multi-Datacenter-Support für Akka Cluster stand vor allem die neue Akka-Typed-API im Vordergrund. Mit ihr lässt sich bereits beim Kompilieren feststellen, ob ein Aktor eine Nachricht eines bestimmten Typs verarbeiten kann – eine Funktion, die bisher von vielen schmerzlich vermisst wurde.