Was ist Scala

Scala ist eine hybride Programmiersprache, welche die objektorientierte und funktionale Programmierung vereint. Der Name der Programmiersprache kommt aus der englischen Umschreibung Scalable Language. Die Programmiersprache eignet sich für einfache Skripte bis hin zu hochverfügbaren "Enterprise" Anwendungen. Auch die Entwicklung eingebetteter Domain spezifischer Sprachen (engl. Domain Specific Language DSL) steht auf den Fahnen von Scala.

Geistiger Vater der Sprache Scala ist Martin Odersky Flagge Gro$szlig;britanien, Professor am EPFL Flagge Gro$szlig;britanien in der Schweiz und "Chairman and Chief Architect" der Firma Typesafe. Martin Odersky ist kein unbekannter in der Java-Welt, so hat er z.B. den GJ Compliler geschrieben, welcher zum javac-Standardcompiler mit der Version 1.3 von Java wurde. In dieser Version des Compilers waren die enthaltenen Generics noch inaktiv, wurden jedoch mit der Version 1.5 "freigeschaltet". Martin Odersky ist auch einer der Gründer der Firma Typesafe. Typesafe bietet kommerziellen Support, Schulungen und Dienstleistungen an, welche Unternehmen benötigen, um Scala in kritischen Bereichen einsetzen zu können.

Einwicklungsgeschichte (Auszug)

Als Vorgänger der Sprache Java können die experimentelle Programmiersprache Pizza sowie der GJ Java Compiler genannt werden. Nachfolgend ein Auszug aus der Scala Entwicklungsgeschichte:

  2001 Entwicklungsbeginn
Version 1.0 2003, November  
  2004 Scala wird der Öffentlichkeit zugänglich gemacht
Version 2.0 2006, März  
  2006 Der Scala Compiler ist nun selbst in Scala geschrieben
Version 2.6 2007, September Die Version 2.6 kann als Kick-off der Sprache Scala angesehen werden.
Version 2.7 2008, März Erstes Release des 2.7er Zweiges (2.7.0-final)
Version 2.8 2008, Juli  
Version 2.9 2011, Mai Einführung paralleler Collections
  2011, Mai Gründung des Unternehmens Typesafe (kommerzielle Firma hinter dem Scala Ökosystem).
Version 2.9.1 2011, August Maintanance release
  2012, September Erster Start des freien Coursera Flagge Großbritanien -Online Kurses: Flagge Großbritanien Functional Programming Principles in Scala.
Mehr als 50000 Entwickler haben sich registriert wovon 9600 den Kurs abgeschlossen haben (ein sehr guter Wert für einen Online-Kurs). Eine erste Wiederholung des Kurses fand im Herbst 2013 statt.
  2913, November Erster Start des Online Kurses https://www.coursera.org/course/reactive Flagge Großbritanien auf Coursera Flagge Großbritanien.
Version 2.10.0 2013, Januar
  • Verbesserte Value Classes
  • Implizite Klassen
  • String Interpolation
  • Dependent Method types
  • Neuer auf ASM basierender Byte Code Emitter
  • Neuer Pattern Matcher
  • Akka ist nun der Standard für nebenläufige Programmierung mit Scala
  • Futures and Promises
  • Experimentell: Scala Reflections
  • Experimentell: Macros
Version 2.11 2014, April

Scala 2.11 hat Verbesserungen in folgenden Bereichen erhalten:

  • Collections
  • Modularisierung
  • Reflection, macros und quasiquotes
  • REPL
  • ...

Weitere Meilensteine

Neben der Programmiersprache haben auch die im Umfeld entstehenden Tools Einfluss auf die Entwicklung der Programmierung mit Scala. Als einen wichtigen Meilenstein sei hier die Scala-IDE in der Version 2.0 genannt, welche im Dezember 2011 erschienen ist. Diese Version kann als Erstes Scala-IDE Release verstanden werden, welches auch für die breite Masse an Programmierern geeignet ist.


Im März 2012 veröffentlichte Typesafe Flagge Großbritanien den Typesafe Stack 2.0 Flagge Großbritanien. Der Typesafe Stack ist eine Sammlung Projekte, welche im kommerziellen Typesafe Stack aufeinander abgestimmt angeboten werden. Zum Typesafestack 2.0 gehören:

Scala, Akka und Play stehen auch Open Source zur Verfügung.

Sind Java-Kenntnisse erforderlich?

Grundsätzlich sind zum Erlernen der Programmiersprache Scala keine Java-Kenntnisse erforderlich. Aber Kenntnisse in Java erleichtern den Umgang mit Scala, da viele Gemeinsamkeiten (z.B. Bytecode, ...) vorliegen. So kann zum Beispiel auf sämtliche Java-Klassen zugegriffen werden. Auch ist es möglich, Java-Klassen zu erweitern bzw. Java-Schnittstellen zu implementieren. Darüber hinaus können Java-Klassen auf Klassen, die mit Scala erstellt wurden, zugreifen. Es lohnt sich also, sich Grundkenntnisse der Sprache Java anzueignen, bevor ein tieferer Einstieg in die Programmiersprache Scala gestartet wird.

Auch in diesem Tutorial werden Vergleiche zur Programmiersprache Java hergestellt, sodass Kenntnisse der Programmiersprache Java zum besseren Verständnis beitragen können.

Vor- und Nachteile der Programmiersprache Scala


Im Internet finden sich immer wieder Diskussionen über Vor- und Nachteile von Scala. Ein Beispiel ist, dass Scala schwer zu erlernen sei. Um es zu überspitzen: Scala ist schwerer zu erlernen als z.B. HTML. Die Möglichkeiten (die Einsatzgebiete) von Scala sind so vielfältig, dass man als "Newbee" schnell den Überblick verlieren kann. Auch war die Fülle an Dokumentation am Anfang noch recht dünn, was sich aber mit der Zeit verbessert hat. Mit der Zeit hat die Fülle an Dokumentationen (Bücher ...) immer weiter zugenommen und wird immer größer.

Nehmen wir einmal Abstand von Quelltextbeispielen aus dem Netz, die einem "Newbee" (und nicht nur einem "Newbee") kryptisch erscheinen, und befassen uns mit einer ganz einfachen Aufgabe. Entwickeln wir einfach ein Programm, welches eine einfache Textzeile auf der Konsole ausgibt (das typische "Hello World!"). Da Java weit verbreitet ist, nehmen wir diese Sprache für den Vergleich mit Scala.

public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}
            

Und nun zum Vergleich das ganze mit Scala:

println("Hello World!")
            

Welche Version ist einfacher zu verstehen?

Nachfolgend eine Auflistung von Vor- und Nachteilen von Scala. Manche Punkte können jedoch je nach Befindlichkeit / Tagesform zwischen Vor- und Nachteil hin und hergeschoben werden.

Vorteile

Funktional- und Objektorientiert

Vollständig Objektorientiert (keine primitive Datentypen)

Höhere Entwicklerprojektivität

Typsicher (strikte Typprüfung)

Traits (so etwas wie Mehrfachvererbung)

Domain Specific Languages (DSL)

Consise (prägnant)

Weniger "Boilerplate code"

Vielfältige Ausdrucksmöglichkeiten (syntaktische Vielfalt)

Plattformunabhängig

Zugriff auf das Java - Ökosystem

Typ - Inferenz

Implizite Konvertierungen

Anziehend füt talentierte / passionierte Entwickler

Nachteile

Vielfältige Ausdrucksmöglichkeiten (syntaktische Vielfalt)

Implizite Konvertierungen

Keine Rückwärtskompatibilität

Langandauernde Lernkurve

Langsamerer Compiler

Sourcecode kann schnell komplex werden

Dan Rosen
http://www.java-tv.com/ Flagge Großbritanien
Scala for Java Developers Flagge Großbritanien


http://www.tutkiun.com/ Flagge Großbritanien
Scala - Pros and Cons.
http://www.tutkiun.com/2009/12/scala-pros-and-cons.html Flagge Großbritanien


Mark NeedhamFlagge Großbritanien
Scala: Our Retrospective of the benefits/drawbacks
http://www.markhneedham.com/blog/2011/11/28/scala-our-retrospective-of-the-benefitsdrawbacks/ Flagge Großbritanien


Dan Rosen
http://www.java-tv.com/ Flagge Großbritanien
Scala for Java Developers Flagge Großbritanien


http://www.scala-lang.org/ Flagge Großbritanien
SCALA 2.11.0 IS NOW AVAILABLE!
http://www.scala-lang.org/news/2014/04/21/release-notes-2.11.0.html Flagge Großbritanien