Java 9: Großer Wurf und kleine Schritte

Java Softwareentwickler

Es ist vollbracht. Dreieinhalb Jahre nachdem Oracle Java SE 8 veröffentlichte und mehrfach um ein paar Monate verschoben, erschien im September Java SE 9. Viele Entwickler haben die neuen Features, wie die Unterstützung von Modulkonzepten, sehnsüchtig erwartet – ab jetzt müssen sie zeigen, welche Vorteile sie tatsächlich bringen.

Ein fehlendes Puzzlestück: das Modul

Die wichtigste Neuerung in Java 9 war nach den Plänen von Oracle eigentlich schon für Java 8 geplant: das Modulsystem Project Jigsaw. Mit der Modularisierung will Oracle Probleme angehen, deren Lösung Java-Entwickler seit einiger Zeit fordern: zum einen der fehlende Kapselungsmechanismus oberhalb von Paketen, zum anderen die damit zusammenhängende „JAR-Hölle“. Denn bislang wurden Klassen ausschließlich in Paketen zusammengefasst. Dabei ließen sich die Klassen nur von anderen Klassen aus demselben Paket verwenden – es sei denn, man kennzeichnete einzelne Klassen als „public“. Dann jedoch standen so gekennzeichnete Klassen theoretisch allen anderen Klassen aus anderen Paketen zur Verfügung. Es ließ sich nicht weiter einschränken, wer Zugriff auf diese öffentliche Klasse bekommen sollte.

Zudem war das Paket die höchste vorgesehene Organisationseinheit. Eher behelfsmäßig konnten Entwickler mehrere Class-Dateien zu einem JAR-Archiv zusammenfassen – das Ergebnis allerdings war lediglich ein gezipptes Verzeichnis, gefüllt mit Class-Dateien. Das erzeugte JAR-Archiv bot keinerlei Kapselung und besaß keine für den Compiler oder die Virtual Machine interpretierbare Java-Beschreibung. Außerdem war einer JAR-Datei nicht anzusehen, von welchen anderen JARs sie abhängig war. Sie diente nur einer rudimentären Organisation. In größeren Projekten entstehen so oft zahllose JAR-Archive und den Entwicklern fällt es schwer, einen Überblick zu behalten. An dieser Stelle setzt das Modulsystem Project Jigsaw an.

Project Jigsaw: Verknüpfte Software-Häppchen

Der Idee nach sind die mit Java 9 eingeführten Module eine Kapselung von Klassen, Ressourcen, Bibliotheken und Konfigurationsdateien. Der Clou: Sie enthalten in ihrem Wurzelverzeichnis die Datei module-info.java. Mit dieser werden die Module zu präzise definierten und selbstbeschreibenden Programmkomponenten. Denn die Info-Datei stellt wichtige Informationen bereit: welche Pakete des Moduls von anderen Modulen nutzbar sein sollen und von welchen anderen Modulen das jeweilige Modul abhängig ist. Durch den modularen Ansatz können Entwickler ihre Programme in kleinere Softwarekomponenten aufteilen und zwischen diesen Abhängigkeiten festlegen und Zugriffe frei verwalten.

Der große Vorteil für Programmierer: Sie beherrschen auch umfangreiche und sehr komplexe Softwareprojekte deutlich leichter, können sie nachträglich verändern und einzelne Teile in anderen Projekten weiterverwenden. Das Modul-Konzept in Java 9 ermöglicht es auch, die Architektur einer Software besser auszudrücken. Beispielsweise lassen sich ganze Schichten – wie die Infrastrukturschicht oder die Applikationsschicht – als Module darstellen. Die Schnittstellen zwischen den Schichten, ihre Abhängigkeiten und Zugriffsfreigaben lassen sich klar definieren. Im Ergebnis soll die Kapselung in Project Jigsaw agile Entwicklungsprozesse unterstützen, indem es die Sicherheit, die Performance und die Flexibilität beim Deployment erhöht.

JShell: Feedback-Kanal für Entwickler

Gerade für Java-Einsteiger war der klassische Programmierzyklus zeitaufwendig und mühsam: Schreiben – Kompilieren – Ausführen – Überarbeiten – Schreiben … Auch zum Testen von Programmteilen oder Snippets musste erst eine große IDE (Entwicklungsumgebung) gestartet werden. Das aktuelle Java-Release schafft hier Abhilfe. Mit der Kommandozeilenanwendung JShell, einer interaktiven REPL-Shell, soll der Ablauf deutlich vereinfacht und beschleunigt werden. JShell arbeitet nach dem Read-Evaluate-Print-Loop-Prinzip (REPL). Nacheinander arbeitet sie die Schritte ab: Einlesen des Programms von der Kommandozeile (Read) – Ausführen des Snippets über den Compiler (Evaluate) – Ausgeben der Anweisungen und Programme (Print) – Wiederholen durch einen Rücksprung auf den ersten Schritt (Loop).

Die JShell bringt bereits ein ganzes Set von eingebauten Kommandos mit und speichert auch die Historie der zuletzt verwendeten Befehle. Das erleichtert den Einstieg und sorgt dafür, dass sich wiederholende Tests zügig ausgeführt werden. Um für direkten Erkenntnisgewinn zu sorgen, erhalten die Anwender schnell Rückmeldung. So zeigt die JShell umgehend an, wenn ein Compilerfehler vorliegt. Auf diese Weise profitieren sowohl erfahrene Entwickler als auch Einsteiger von dem kleinen Tool – beispielsweise, wenn sie „zwischendurch“ die Funktion eines Programmteils oder einer Schnittstelle ausprobieren möchten.

Viel Neues – auch im Kleinen

Außer den beiden großen Features, der Modularisierung und der JShell, hat Oracle noch rund 100 kleinere Neuerungen umgesetzt. So zum Beispiel die frisch eingeführte Klasse „StackWalker“: Mussten Informationen über den aktuellen Stack bislang mit der Throwable-Methode „getStackTrace“ abgefragt werden, lassen sich die Informationen durch StackWalker nun gezielt ermitteln – sehr hilfreich, wenn man nur an den obersten Elementen eines Stacks interessiert ist. Auch eine HTTP/2-client-API ist in Java 9 neu hinzugekommen. Damit wird das 2015 zum Standard erhobene Internetprotokoll erstmals auch von Java umfassend unterstützt. Damit lassen sich die Vorteile von HTTP/2, wie geringere Latenz und schnellere Ladezeiten von Webseiten auch in der Java-Welt voll nutzen.

Eine Übersicht über alle Änderungen im Major Release stellt Java auf seiner Dokumentationsseite bereit. Dort finden Interessierte auch die Links zum Migrations-Guide oder zum Download der aktuellen Developer-Version. Für die Zukunft plant Oracle schnellere und feste Release-Zyklen. Alle sechs Monate sollen künftig Aktualisierungen veröffentlicht werden. Für Entwickler sind das gute Aussichten.

Zurück zur Übersicht

E-Book:
Kernkompetenzen agilen Führens und Arbeitens in der IT

ZUM DOWNLOAD

E-Book: Agiles Projektmanagement mit Scrum


ZUM DOWNLOAD

E-Book:
Stressbewältigung: 10 Tipps für einen entspannten Tag


ZUM DOWNLOAD

E-Book: Tipps für mehr Durchsetzungs-
vermögen


ZUM DOWNLOAD