Scala-Befehle – Schnellreferenz für die JVM

Scala vereint objektorientierte und funktionale Programmierung auf der Java Virtual Machine (JVM). Code in Scala ist oft deutlich kompakter als in Java, läuft aber im selben Ökosystem. Bekannt wurde Scala durch Apache Spark für Big Data und Akka für nebenläufige Systeme.

Erste Schritte: REPL und Projekt

scala          # REPL starten
scala-cli run  app.scala   # Skript direkt ausführen
sbt new scala/scala3.g8   # neues Projekt (sbt-Build-Tool)

Grundlagen: val, var und Typen

val name: String = "KIT"   // unveränderlich (immutable)
var count: Int = 0          // veränderlich (selten nötig)
val list = List(1, 2, 3)    // Typ-Inferenz

Funktionale Bausteine

list.map(_ * 2)        // [2, 4, 6]
list.filter(_ > 1)     // [2, 3]
list.foldLeft(0)(_ + _) // 6

// Lambda-Funktion
val double: Int => Int = x => x * 2

Case Classes und Pattern Matching

case class Punkt(x: Int, y: Int)
val p = Punkt(3, 4)

p match {
  case Punkt(0, 0) => "Ursprung"
  case Punkt(x, y) => s"x=$x, y=$y"
}

Warum Scala?

  • Interoperabel – nutzt Java-Bibliotheken direkt, läuft auf der JVM.
  • Unveränderliche Datenstrukturen standardmäßig – weniger Nebenwirkungen, besser parallelisierbar.
  • Nebenläufigkeit – Akka-Actors machen Concurrency handhabbar, siehe Glossar Thread und Process.
  • Domain-Specific Languages – durch Operator-Überladung und Currying.

Alternativen im Vergleich

  • Kotlin – moderner, pragmatischer, ebenfalls JVM.
  • Elm – rein funktional, aber im Browser statt auf der JVM.
  • F# – funktional auf .NET.

Weiterführend: Compiler, Garbage Collection und JVM.