Scala - die coole neue Sprache für die JVM
Remo Gisi 2 August 2013 13:45:11
Seit gut einem Jahr arbeite ich regelmässig mit Scala und bin davon begeistert. Deshalb hier nun ein paar Zeilen zur neuen, coolen Programmiersprache:Wie auch Java wird Scala zu Bytecode konvertiert, der dann auf der Java Virtual Machine (JVM) läuft. Dies hat ein paar entscheidende Vorteile:
- Scala-Programme laufen überall da, wo auch Java-Programme laufen,
- Java-Code und somit alle Java-Libraries können direkt im Scala-Code benutzt werden und
- ein Grossteil der Java-spezifischen Tools (IDE, Build-Tools, Code-Analyse, etc.) können direkt (oder mit nur sehr kleinen Anpassungen) auch für Scala verwendet werden.
Nun, aber wieso sollte man denn nicht einfach Java benutzen? Hier nur ein paar wenige Gründe, die für Scala sprechen:
- Starke Typinferenz: Scala ist - genau wie Java - statisch typisiert. Neu hingegen ist die mächtigere Typinferenz, die den Typ eines Ausdrucks erkennt, ohne dass man ihn explizit angeben muss. Was in Java so aussieht:
HashMapmyMap = new HashMap ;()
kann man in Scala dadurch kurz und bündig so schreiben:
val myMap = Map[String, Int]() - Multiple Inheritance durch Traits - ein Trait ist in Scala ein "Interface mit Implementation" und eine Klasse kann von beliebig vielen Traits erben. Das vereinfacht nicht nur objektorientiertes Design, sondern ermöglicht zum Beispiel Dependency Injection ohne dass man auf ein Framework wie Spring angewiesen ist.
- Sequence Comprehensions. Wie Python, Perl oder Ruby unterstützt auch Scala die intuitiven Sequence Comprehensions - sicherlich ein Grund für die Beliebtheit von Scala als Scriptsprache.
- Eine kurze, prägnante Syntax. Mehrfachnennung der Typen fällt weg, ebenso das Semikolon am Zeilenende. Die Klammern beim Funktionsaufruf können auch meist weggelassen werden. Beliebige Zeichen können Teil eines Methodennamen werden. Das ermöglicht sehr elegante DSLs und Wrappers, beispielsweise für die bekannte Java-Library BigInteger. So wird Java's
BigInteger x = new BigInteger ("123456789");
BigInteger y = new BigInteger ("112334");
BigInteger res = x.multiply( x.subtract(y) );
in Scala zu :
val x = BigInteger ("123456789")
val y = BigInteger ("112334")
val res = x * (x - y)
- Scala ist in seinen Grundzügen weniger komplex als Java: Alles ist ein Objekt. Das gilt auch für primitive Typen - Boxing/Unboxing-Probleme fallen also keine an. Ausserdem sind auch Funktionen beliebigen Grades nur Objekte. Diese können somit - genau wie alle anderen Objekte - als Argumente oder Rückgabewerte von Methoden verwendet werden.
- Scala kommt praktisch vollständig ohne Boilerplate-Code aus. Getter und Setter gibt es nicht, und lange Typenbezeichnungen braucht es meist nicht. Die Codemenge von Scala-Code ist - je nach Messung - um mindestens Faktor 2 bis 3 kleiner als bei Java-Code. Das sorgt für saubereren Code und macht Projekte übersichtlicher und günstiger.
Dies ist bereits eine beachtliche Liste von Features, die das Leben eines Scala-Entwicklers massiv vereinfachen. Dabei noch gar nicht angesprochen haben wir die Fülle von Einflüssen aus der funktionalen Programmierung. die Scala mindestens ebenso prägen. Für diesen Beitrag führt das nun leider zu weit - aber wer weiss, vielleicht komme ich ein ander Mal dazu. Eines lässt sich auf jeden Fall bereits sagen: Scala ist die coolste moderne Sprache für die JVM. Ob als Entwickler oder als Software-Unternehmen: Unbedingt ausprobieren!
Comments Disabled