Scala ist eine funktionale und objektorientierte Programmiersprache, welche auf der JVM (Java Virtual Machine) läuft. (Einer Virtualisierten Laufzeitumgebung, die einst ausschliesslich für Java entwickelt wurde.)
Der Name Scala leitet sich von “scalable language” (Skalierbare Sprache) ab. Wie der Name bereits impliziert, ist Skalierbarkeit Programm. Scala ermöglicht es, hoch-frequentierte und hoch-verfügbare Systeme zu bauen, welche beliebig weiter skalierbar sind. Scala erlaubt sowohl up-scaling (mehrere Prozessor-Kerne) als auch out-scaling (auf entfernte Systeme) mit Hilfe von Akka.
Scala verfolgt einen funktionalen Programmieransatz, bei dem es darum geht, einen “shared state” (global geteilter Zustand) möglichst zu vermeiden, oder zu isolieren. Dies ist eine Grundvoraussetzung, um Verteilte Systeme zu betreiben.
Scala ist zu 100% kompatibel mit Java und kann somit vom reichen Fundus der Java-Welt profitieren. Es bietet eine umfangreiche API mit einer Vielzahl von äusserst nützlichen Stream-Funktionen von Daten in Listen, Maps oder Binär-Bäumen zu manipulieren. In einigen Bereichen geht Scala aber den Weg des geringsten Widerstands. So kennt die Sprache keine eigene Implementierung von Strings, sondern benutzt einfach java.lang.String (da String bereits optimal implementiert wurde für Java).
Play-Framework
Play ist das Web-Framework unserer Wahl, mit dem wir bereits viele spannende Projekte (in Java) realisieren konnten. Unsere Kunden mögen überrascht sein zu hören, dass das Play Framework in Scala geschrieben ist. Play bietet sowohl eine API (Application Programmer Interface) für Java als auch für Scala.
Akka
Akka ist ein Framework für verteiltes Rechnen, bei dem sich verschiedene Actors (welche auf einer beliebigen Maschine laufen können) zu einem Cluster zusammen schliessen lassen. Somit kann anfallende Arbeit auf verschiedene Maschinen verteilt werden, was die Verfügbarkeit und Performance steigert.
Scala im Browser
Scala ist eine Programmiersprache, die für die Ausführung auf eine JVM angewiesen ist. Doch dank Scala-js kann Scala-Code nun auch in Javascript kompiliert werden, welches im Browser ausgeführt werden kann.
Dies schliesst den Graben zwischen dem Client (Ihrem Browser) und dem Server, da beide dieselbe Sprache sprechen und sogar gemeinsamen Code teilen können.
SBT (Scala Build Tool)
Scala liefert mit SBT (Scala Build Tool) ein Orchestrierungs-Werkzeug, um komplexe Applikationen zu bootstrappen und benötigte Abhängigkeiten (Dependencies) zu verwalten. Scala und alle eingesetzten Libraries laufen dank SBT auf jeder Maschine mit JVM (vom Mobiltelefon bis zum Server-Cluster).
Scala wird von der Firma Lightbend Inc. und der École polytechnique fédérale de Lausanne (EPFL) voran getrieben und ist zu 100% Open Source. Scala begeistert eine schnell wachsende Zahl von innovativem Programmieren rund um den Globus. Auch die Schweiz mischt ganz vorne mit. Die EPFL, wo Martin Odersky (Entwickler der Sprache) als Professor doziert, treibt die Entwicklung von Scala voran und bietet gratis Online Kurse (MMO) für Entwickler an.
Bei der Entstehung von Scala (2003) hatten Java-Konzepte eine wichtige Rolle gespielt. So sass der Erfinder der Sprache (Martin Odersky) im Java Core Team. Scala hat sich seither aber zu einer ganz eigenständigen Sprache entwickelt, mit vielen interessanten Konzepten und Sprach-Features.
Dies hat nicht zuletzt die Entwicklung von Java voran getrieben. So hatte Scala das Konzept von Generics eingeführt, bevor es von Java adaptiert wurde. Dasselbe gilt für den funktionalen Ansatz, welchen Java erst seit der Version 8 unterstützt.
Aus Sicht des Entwicklers
Wir bei insign sind begeistert von der Sprache!
Scala unterstützt alle Anforderungen, welche wir an eine moderne Programmiersprache stellen und bietet zudem Sprach-Features, die man bei anderen Sprachen vergeblich sucht. Natürlich ist Scala type-safe (typensicher), was bedeutet, dass man bereits im Code festlegt, von welchem Typ ein erwartetes Objekt ist. So werden die meisten Fehler schon beim kompilieren entdeckt.
“Write less, do more”: Scala lässt unnötige Klammern oder Typen-Deklarationen (wo implizit vorhanden) beiseite. Selbst ein Return-Statement wird überflüssig. Konstruktoren müssen nicht mühsam überladen werden. Pattern-Matching ermöglicht Switch-Case auf Klassen-Ebene und Vieles mehr.
Aus Sicht des Kunden
Haben Sie Anforderungen an moderne Web-Software, die über den Einsatz eines CMS oder Webshops hinaus gehen? Wenn Performance zählt, Sie eine innovative Web-Applikation mit modernster Technologie betreiben wollen, oder wenn verteiltes Rechnen zum Thema wird und Ihr System auch bei viralem User-Wachstum nicht in die Knie gehen soll, dann ist Scala genau das Richtige für Sie!
Mit Scala, Akka und dem Play Framework haben wir alle Mittel an Bord, um für Sie die Software für die Zukunft zu bauen.
Nach all dem Lobgesang über Scala, muss es doch Hürden geben. Zugegeben, der Einstieg in Scala kann etwas schwierig sein. Es gilt, viele neue Konzepte zu verstehen. Da Scala zahlreiche Probleme mit Hilfe von Sprach-Features adressiert, stolpert man zu Beginn oft über völlig kryptisch anmutende Sprach-Konstrukte, welche man zuerst kennen lernen muss. Hat man diese erste Hürde genommen, ermöglicht Scala einem jedoch, effizienten und sauberen Code zu schreiben.
Wir nutzen Scala bei unseren Play-Projekten, um mit Hilfe der Templating Engine Twirl unsere Views und View-Helpers zu renderen. Nebenbei engagieren sich mehrere unserer Entwickler auch über Ihre Arbeitszeit hinaus in Scala-Netzwerken, oder bauen eigene Applikationen mit Scala.
Scala ist eine sehr vielseitig einsetzbare Programmiersprache. Ganz egal, ob Sie Scala für Ihre Desktop-Applikation nutzen, Ihre Web-Applikation damit betreiben, oder die Website im Browser Ihres Kunden dynamisch machen. Scala kann mit all diesen Anforderungen umgehen. Scala ist äusserst performant (da kompiliert) und skalierbar.
Es setzt auf die bewährte JVM und lässt sich dank Akka auch über die Grenzen ihres Servers hinaus skalieren. Scala vereint eine rasch wachsende Gemeinschaft von Entwicklern, welche die Technologie voran treibt und neue innovative Konzepte schafft. Mit Scala etwickelt man Software, welche für die Zukunft gewappnet ist.