scalatutorial.de

Stufe 1Einstieg · Lektion 1 von 34

Einleitung: Was ist Scala?

Aktualisiert am 24. September 20264 Min. LesezeitSchritt 1/5 dieser Stufe

Scala ist eine statisch typisierte Programmiersprache, die objektorientierte und funktionale Programmierung in einer knappen Syntax verbindet. Diese Lektion klärt, woher sie kommt, was sie auszeichnet und was Sie in diesem Lehrgang erwartet.

Eine Sprache, die mitwächst

Der Name ist Programm: Scala steht für scalable language. Gemeint ist, dass dieselbe Sprache für ein Skript mit fünf Zeilen taugt und für ein System, das auf Dutzenden Servern läuft. Möglich wird das, weil Scala wenige, aber sehr allgemeine Bausteine hat – Klassen, Traits, Funktionen, Pattern Matching –, aus denen sich Bibliotheken bauen lassen, die sich wie eingebaute Sprachmittel anfühlen.

Scala ist statisch typisiert: Der Compiler prüft vor dem Start, ob Typen zusammenpassen. Trotzdem schreiben Sie selten Typen hin, denn die Typinferenz leitet sie meist selbst ab. Das Ergebnis sieht oft aus wie eine Skriptsprache, verhält sich aber wie Java oder C#.

 Scala 3
val preise = List(19.90, 4.50, 12.00)   // Typ: List[Double]
val summe  = preise.sum                  // Typ: Double
println(f"Summe: $summe%.2f Euro")

Herkunft und Entwicklung

Scala wurde ab 2001 an der École Polytechnique Fédérale de Lausanne (EPFL) von Martin Odersky entworfen. Odersky hatte zuvor an Java-Generics und am Java-Compiler javac mitgearbeitet. Nach einer internen Version Ende 2003 erschien Scala Anfang 2004 öffentlich für die Java-Plattform.

Innenhof unter dem geschwungenen Betondach des Rolex Learning Center auf dem EPFL-Campus
Das Rolex Learning Center auf dem Campus der EPFL in Lausanne, wo Scala entstand · Foto: Guilhem Vellut from Annecy, France, CC BY 2.0, Wikimedia Commons

Einige Wegmarken:

JahrEreignis
2004erste öffentliche Version für die JVM
2010Scala 2.8 mit überarbeiteter Collections-Bibliothek
2011Gründung der Firma Typesafe (später Lightbend) für kommerzielle Unterstützung
2013Scala 2.10 mit Futures und String-Interpolation
2019Scala 2.13, erneut neue Collections
2021Scala 3.0 erscheint im Mai
2026Scala 3.9 ist die aktuelle Version, 3.3 die Langzeitversion (LTS)

Scala 3 war ein großer Schritt: Syntax mit Einrückung statt Klammern, enum, given/using statt implicit, Union-Typen und ein neues Metaprogrammiermodell. Dieser Lehrgang ist auf Scala 3 ausgerichtet und weist auf Scala-2-Schreibweisen hin, wo sie Ihnen in älterem Code begegnen.

Objektorientiert und funktional zugleich

In Scala ist jeder Wert ein Objekt – auch Zahlen und Funktionen. 1 + 2 ist eigentlich der Methodenaufruf 1.+(2). Gleichzeitig sind Funktionen Werte, die Sie speichern, übergeben und zurückgeben können. Diese Mischung nennt man oft objekt-funktional.

Bausteine funktionaler Programmierung und was sie zusammen ergebenreine Funktiongleiche Eingabeunveränderlichval, List, case classAusdrückeif, match liefern WerteKompositionmap, flatMap, andThentestbarnachvollziehbar
Die funktionalen Grundideen, die Scala besonders gut unterstützt.

Praktisch heißt das: Sie modellieren Ihre Daten mit Klassen und Traits wie in Java, verarbeiten sie aber bevorzugt mit unveränderlichen Werten und Funktionen wie map, filter und fold. Wie weit Sie in die funktionale Richtung gehen, bestimmen Sie selbst.

Wo Scala läuft

Vom Scala-Quelltext über den Compiler zu JVM, Browser oder nativer DateiHallo.scalaQuelltextscalacCompiler.class + .tastyBytecode.js / nativScala.js / NativeJVMJava 17/21 …Browseroder Binärdatei
Ein Quelltext, drei mögliche Ziele.

Wer Scala einsetzt

Scala ist besonders dort verbreitet, wo viele Daten oder viele gleichzeitige Anfragen verarbeitet werden. Apache Spark und Apache Kafka sind in Scala geschrieben; Twitter, LinkedIn, The Guardian und die New York Times haben Scala in Produktivsystemen genutzt. Mit Akka bzw. dessen freiem Ableger Apache Pekko und dem Play Framework gibt es ausgereifte Werkzeuge für nebenläufige und webbasierte Anwendungen – beides lernen Sie in Stufe 6 kennen.

So ist der Lehrgang aufgebaut

Die 34 Lektionen sind in sechs Stufen gegliedert: Einstieg, Sprachkern, Objekte und Typen, funktionales Denken, Collections sowie Werkzeuge und Oberflächen. Jede Lektion endet mit einer kleinen Aufgabe samt Lösungsvorschlag. Weiter geht es mit der Installation; danach schreiben Sie Ihr erstes Hello World.

Passt dazu