Ein Überblick über Java-Alternativen für den industriellen Einsatz

Lange hat sich in der Java-Welt wenig bewegt und immer wieder hochkochende Themen wie Modularisierung zeigen, dass Innovation in dem Gebiet alles andere als leicht fällt. Die Hoffnung ruht auf alternativen Sprachen.

In Pocket speichern vorlesen Druckansicht 49 Kommentare lesen
Lesezeit: 21 Min.
Von
  • Benjamin Schmid
Inhaltsverzeichnis

Lange hat sich in der Welt von Java wenig bewegt. Im März 2014 sollen die Closures aus Java 8 endlich wieder eine frische Brise aufkommen lassen. Aber schon das über acht Jahre alte und soeben neu aufgeflammte Debakel um die Java-Modularisierung Jigsaw zeigt, wie schwer den Machern auch in Zukunft größere Innovationen fallen dürften. Doch es gibt Hoffnung. Alternative Sprachen für die JVM versprechen neue Programmierparadigmen, prägnanteren Code und mehr Flexibilität.

Für den industriellen Einsatz sind insbesondere die neu am Horizont auftretenden Vertreter statisch und streng typisierter Programmiersprachen interessant. Ihre Prüfungen zur Entwurfszeit und Garantien zur Laufzeit bieten komplexen Umfeldern größere Sicherheiten und machen sie damit zu direkten Konkurrenten für Java. Zeit, sich einen Überblick über die wichtigsten Kandidaten zu verschaffen.

Im Zusammenhang mit neuen Programmiersprachen wird ein Thema häufig als Erstes genannt: "Funktionale Programmierung". Dabei ist die rein funktionale Programmierung ein ziemlicher Exot und zudem für viele Entwickler recht ungewohnt. Allgemein sind daher eher multi-paradigmische Sprachen gemeint, die unter anderem die Elemente funktionaler Programmierung in sich vereinen.

Doch wozu das alles? Funktionale Sprachmittel ermöglichen in bestimmten Konstellationen eine erheblich effizientere Programmierung. Auch Java 8 führt mit Closures ein wichtiges funktionales Feature ein. Das folgende Beispiel illustriert den Unterschied anhand des Sortierens einer Liste:

// "Klassisches" Sortieren einer Liste mittels Comparator 
Collections.sort(listOfCars, new Comparator<Car>(){
public int compare(Car c1, Car c2){
return p1.maker.compareTo(p2.maker);
}
});

Mit Closures unter Java 8 lässt sich die Aufgabe dagegen ungleich prägnanter lösen:

// Sortieren einer Liste mittels Lambda-Ausdruck
listOfCars.sort((c1, c2) -> c1.maker.compareTo(c2.maker));

Gleich vorweg: Alle der hier vorgestellten Sprachen sind funktional und gehen dabei deutlich über die in Java 8 gebotenen Mittel hinaus. Letztendlich liegen die Unterschiede jedoch im Detail, sodass sich eine nähere Einzelbetrachtung anbietet.