Inhaltstypen
11.04.2016

Scala

Die vielseitige Programmiersprache für innovative und skalierbare Anwendungen

Was ist Scala?

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.

Das Scala-Ökosystem

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 Community

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.

Ist Scala das bessere Java?

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.

Wieso Scala?

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!

Hürden (für Entwickler)

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.

Scala @ insign gmbh

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.

Fazit

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.

letzte 4 Blog-Beiträge

KI-gestützte Auftragserfassung: Wenn PDF-Bestellungen automatisch ins ERP finden

Viele Unternehmen erfassen Bestellungen aus E-Mails und PDFs noch immer manuell – obwohl genau hier enormes Automatisierungspotenzial liegt. Unser Referenzprojekt mit ASTORtec zeigt, wie KI-gestützte Auftragserfassung unstrukturierte PDF-Bestellungen ausliest, prüft und direkt ans ERP übergibt. Ein...

Hyvä für Magento: Wenn das Frontend endlich kein Bremsklotz mehr ist

Viele Magento-Shops leiden unter einem veralteten, komplexen Frontend, das Performance, Core Web Vitals und Conversion ausbremst. Hyvä setzt hier an und macht Magento mit einem modernen, schlanken Frontend wieder schnell, wartbar und nutzerfreundlich. In diesem Beitrag zeigen wir, wann sich Hyvä...

Webclient-Entwicklung für komplexe Business Software

Moderne Webclients bringen komplexe Business Software direkt in den Browser – schnell, sicher und einfach bedienbar. Am Beispiel des ARTS Webclients für Interact/SER/Doxis zeigt insign, wie bestehende Systeme mit React, sauberer API-Integration und durchdachter Benutzerführung zukunftsfähig gemacht...

Magento zu Shopify: Wann sich der Wechsel lohnt

RAUSCH hat den bisherigen Magento-2-Shop durch eine flexible Shopify-Lösung ersetzt – mit weniger technischem Aufwand, mehr Eigenständigkeit im Marketing und deutlich besseren E-Commerce-Resultaten. Das Referenzprojekt zeigt, wann sich der Wechsel von Magento zu Shopify lohnt und worauf es bei...

diesen Beitrag teilen