Was ist Scala?
Scala (Martin Odersky, EPFL, 2004) verbindet objektorientierte und funktionale Programmierung auf der JVM (Java Virtual Machine), läuft aber auch als JavaScript (Scala.js) und nativ (Scala Native). Der Name steht für scalable language: Sie wächst mit deinen Anforderungen von kleinen Skripten bis zu riesigen verteilten Systemen. Scala 3 (2021) hat eine aufgeräumte Syntax und stärkere Typen.
Bekannte Einsatzgebiete: Apache Spark (Big Data), Akka/Pekko (verteilte Systeme), Kafka, Backend-Dienste (Play, http4s, ZIO, Cats Effect). Twitter/X, LinkedIn und Netflix setzten stark auf Scala. Java-Bibliotheken lassen sich direkt nutzen.
Werkzeuge
- scala-cli: das komfortabelste Werkzeug (
scala-cli run Hallo.scala) - sbt (Build-Werkzeug), Mill
- IDEs: IntelliJ IDEA (Scala-Plugin), VS Code mit Metals
- Scastie (scastie.scala-lang.org): Scala im Browser
scala-cli run Hallo.scala
scala-cli test .
scala-cli repl # interaktive Konsole
scalac -d out Hallo.scala && scala -cp out hallo # klassischDas erste Programm
@main def main(): Unit =
println("Hallo Scala!")
val name = "Mia"
println(s"Hallo, $name!") // s-Interpolation
println(s"2 + 3 = ${2 + 3}")
println(f"Pi ist ungefähr ${math.Pi}%.3f") // f-Interpolation mit Format
print("ohne Zeilenumbruch")
println()Ausgabe
Hallo Scala! Hallo, Mia! 2 + 3 = 5 Pi ist ungefähr 3.142 ohne Zeilenumbruch
@main defkennzeichnet den Einstiegspunkt (Scala 3)- Einrückung gliedert Blöcke (wie Python); geschweifte Klammern sind optional
s"..."setzt Werte ein,f"..."formatiert,raw"..."lässt\unverändert- Anweisungen brauchen kein Semikolon
- Kommentare:
// ...,/* ... */, Dokumentation/** ... */
val und var
@main def main(): Unit =
val konstante = 42 // unveränderlich (bevorzugen!)
var zaehler = 0 // veränderlich
zaehler += 1
val alter: Int = 17 // Typ ausdrücklich
val (x, y) = (3, 4) // Tupel zerlegen
println(s"$konstante $zaehler $alter $x $y")
val ergebnis = if x > 2 then "groß" else "klein" // if ist ein Ausdruck
println(ergebnis)
val block =
val a = 10
val b = 20
a + b // letzter Ausdruck ist der Wert
println(block)
println((1 to 5).sum)Ausgabe
42 1 17 3 4 groß 30 15
So führst du den Code aus: Im Browser mit Scastie (scastie.scala-lang.org) oder lokal mit scala-cli run Hallo.scala.
Merke
- Scala vereint OOP und funktionale Programmierung auf der JVM
@main def, Einrückungssyntax in Scala 3,val(unveränderlich) vorvar- Fast alles ist ein Ausdruck (
if, Blöcke) - Interpolation mit
s"..."undf"..." - Werkzeuge: scala-cli, sbt, Metals, Scastie
Aufgabe
Gib Name, Alter und das Geburtsjahr mit s"..." aus.