... aber natürlich vor allem eine funktionale, objektorientierte Programmiersprache für die
Java Virtual Machine :-)
Scala hat das Zeug dazu, die nächste große Sprache nach bzw. neben Java zu werden. Viele Ausdrücke lassen sich in Scala einfacher und kürzer als in Java schreiben, dennoch bleibt die statische und starke Typisierung wie bei Java erhalten. Ein großes Plus ist zudem die nahtlose Integration mit den unzähligen bestehenden Java-Bibliotheken. Und Scala ist nicht wirklich neu und nur irgendwie gerade cool, sondern bereits acht Jahre alt und
stabil.
Zum Einstieg verwendet man am besten
Eclipse 3.4 (das "Classic"- oder "Java EE"-Paket). Ein JDK 5.0 oder neuer sollte bereits installiert sein. Nun fehlt nur noch das
Scala-Plugin, das man in Eclipse im Menü
Help > Software Updates... mit der Update-URL
http://www.scala-lang.org/scala-eclipse-pluginherunterladen lässt.
Wechselt man in die Scala-Perspektive, kann man unter
File > New ein neues "Scala Project" anlegen. Wie aus Java gewohnt legt man ein Paket an und in diesem Paket dann ein "Scala Object" (!). Richtig gelesen, Scala unterstützt nicht nur Klassen, sondern auch einzelne Objekte. Wenn wir dieses Objekt von
Application erben lassen, entspricht das der
main-Methode in Java:

Scala bietet Typinferenz, d.h. man muss beim Deklarieren einer Variablen nicht zwingend den Typ angeben, wenn Scala diesen aus dem Kontext eindeutig ableiten kann. Die Variable ist dann trotzdem zur Übersetzungszeit typsicher, man kann also keine inkompatiblen Werte zuweisen:

Wie bei
funktionalen Sprachen üblich, liegt eine der Stärken in der Listenverarbeitung. Listen können mit einer Java-ähnlichen Syntax angelegt werden (es geht auch funktionaler, siehe erster Screenshot):
val früchte = List("Äpfel", "Birnen", "Orangen")
Entweder kann man die Liste dann mit einer Java 5-ähnlichen for-each-Schleife ausgeben:
for (frucht <- früchte) { println(frucht) }
Oder man nutzt ein anonymes Funktionsliteral, eine sogenannte
Funktion höherer Ordnung, die man als Wert an die foreach-Methode der Liste übergibt:
früchte.foreach(f => println(f))
Da man den Punktoperator beim Methodenaufruf weglassen darf und println nur ein Argument erwartet, geht das auch noch kürzer:
früchte foreach println
Und immer daran denken: Auch wenn das so langsam nach einer Skriptsprache aussieht (und tatsächlich ähnlich schnell programmiert werden kann), haben wir hierbei statische, starke, vom Compiler geprüfte
Typisierung!
Soweit fürs Erste, das sollte als Appetitanreger reichen :-)