ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.
WikiScala

Scala

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

scala-logo.png Scala {en} ist eine Programmiersprache, die mit dem Ziel entwickelt wird, gängige Programmiermethoden präzise, elegant und typ-sicher auszudrücken. Sie unterstützt funktionale und objektorientierte Programmierung. Der integrierte Compiler übersetzt den Quellcode in Java-Bytecode, der mittels Java ausgeführt werden kann. Java-Bibliotheken können aus Scala heraus bruchlos aufgerufen werden, so dass Javaprogrammierer eine Menge APIs, beispielsweise zu Swing, JDBC und Netzwerk weiterverwenden können. Umgekehrt lässt sich Scalacode aus Java nutzen.

Hat man die selbe Funktionalität sowohl in Scala als auch in Java programmiert, fällt auf, dass der Java-Quellcode doppelt bis dreifach so lang ist. Als Alternative zu Shell-Scripts können Scala-Scripts geschrieben werden. Beim ersten Start eines Scala-Scripts wird dieses erst kompiliert und hat daher eine längere Laufzeit.

Scala wird seit 2001 am Labor für Programmiermethoden an der École polytechnique fédérale de Lausanne unter der Leitung von Martin Odersky {en} entwickelt.

Installation

Folgendes Paket wird benötigt [1]:

  • scala (universe, [2])

Interaktive Konsole

Die Arbeitsweise einer Konsole [3] ist ähnlich der Shell für Linux. Sie ist vor allem für Einsteiger und zum Testen von kleineren Abschnitten des Quelltextes nützlich, da die eingegebenen Befehle sofort ausgeführt werden.

Die interaktive Konsole wird gestartet durch [3]

scala 

Skripte

Skripte sind meist kleinere Programme, die von Scala direkt ausgeführt werden können, ohne vorher in Java-Bytecode übersetzt zu werden. Ein Skript wird mit einem Editor [4] erstellt und in einer Datei mit der Endung .scala gespeichert. Im folgenden Beispiel wird der Scala-Compiler eingestellt. Die übergebenen Argumente werden in der foreach-Schleife der Reihe nach verarbeitet. Bei fehlenden Parametern tut foreach nichts.

Das Folgende als Datei scala-test.scala anlegen und dann das Ausführungsrecht setzen:

1
2
3
4
5
6
#!/usr/bin/env scala
!#
def promptprint (s: String) = {println ("> " + s}

println ("Hallo ")
args foreach promptprint
chmod +x scala-test.scala
./scala-test.scala Scala funktioniert 

Codebeispiele

Definition einer Methode

1
def max (x: Int, y: Int) = if (x > y) x else y

Listen und Maps

Definition und Ausgabe einer Liste. Klassisch:

1
2
val list = List ("hello", "world")
for (s <- list) println (s)

oder funktional:

1
2
val list = List ("hello", "world")
list foreach println

oder so:

1
2
val list = List("hello", "world")
list.map (println)

Definition einer Map und Ausgabe eines Eintrags:

1
2
3
var capital = Map("US" -> "Washington", "France" -> "Paris")
capital += ("Japan" -> "Tokyo")
println(capital("France"))

Ausgabe aller Dateien mit der Endung .scala:

1
(new java.io.File (".")).listFiles.filter (f => f.getName.endsWith (".scala")).foreach (println) 

Verschiedenes

  • Eine REPL (Read-Eval-Print-Loop) im Browser mit kleinem Tutorial findet sich auf simplyscala.com. {en} {fr}

  • Ein Vergleich, der die Codeersparnis gegenüber Java zeigt, ist auf stackoverflow {en} zu finden, welches auch eine gute Anlaufstelle bei Fragen ist.

Projekte, die Scala verwenden

Der bekannteste Einsatz von Scala ist wohl Twitter {en}. Viele weitere Projekte gibt es bei Sourceforge {en}, GoogleCode {en} und GitHub {en}.

IDE Vergleich

  • IntelliJ IDEA Community Edition (kostenlos und OpenSource) + Scala plugin gilt als die Entwicklungsumgebung, die Scala am besten unterstützt. Information zu Datentypen per Strg + Q

  • Das Eclipse-Plugin hat Schwächen bei Code-Completion, Debugging, Maven-Unterstützung (m2eclipse). Information zu Datentypen per mouseover.

  • Das NetBeans Scala-Plugin "Scala For NetBeans" wurde seit 2008 nicht mehr aktualisiert.

  • Emacs + ENSIME + SBT gilt als besonders schnell.

ubuntuusers.local › WikiScala