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 , Professor am EPFL 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.
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 -Online Kurses:
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 auf Coursera . | |
Version 2.10.0 | 2013, Januar |
|
Version 2.11 | 2014, April |
Scala 2.11 hat Verbesserungen in folgenden Bereichen erhalten:
|
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 den Typesafe Stack 2.0 . 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.
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.
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.
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
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/
Scala for Java Developers
http://www.tutkiun.com/
Scala - Pros and Cons.
http://www.tutkiun.com/2009/12/scala-pros-and-cons.html
Mark Needham
Scala: Our Retrospective of the benefits/drawbacks
http://www.markhneedham.com/blog/2011/11/28/scala-our-retrospective-of-the-benefitsdrawbacks/
Dan Rosen
http://www.java-tv.com/
Scala for Java Developers
http://www.scala-lang.org/
SCALA 2.11.0 IS NOW AVAILABLE!
http://www.scala-lang.org/news/2014/04/21/release-notes-2.11.0.html