Falk Sippach OIO Orientation in Objects GmbH

„Die Idee mit den halbjährlichen Major Releases und damit regelmäßigen, wenn auch kleinen Updates scheint aufzugehen. Oracle hat bisher pünktlich geliefert, und so können wir bereits auf die nächsten Neuerungen im Oktober 2019 gespannt sein. Nicht vergessen darf man, dass das JDK 12 seitens Oracle nur für ein halbes Jahr mit Updates unterstützt wird. Man hat also jetzt die Wahl und bleibt entweder bis 2021 beim JDK 8 oder dem letzten LTS-Release JDK 11.“

Java 7 ist noch gar nicht richtig kalt, Java 8 natürlich immer noch die am meisten genutzte Version, und nun kommt pünktlich ein halbes Jahr nach dem JDK 11 (LTS-Release) bereits Java 12 heraus. So richtig haben wir Java-Entwickler uns noch nicht an diese kurzen Abstände gewöhnt. Andererseits ist es schön, schon wieder mit kleinen Sprachverbesserungen experimentieren zu können.

In das JDK 12 haben es die folgenden Java Enhancement Proposals (JEP) geschafft:

  • JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
  • JEP 230: Microbenchmark Suite
  • JEP 325: Switch Expressions (Preview)
  • JEP 334: JVM Constants API
  • JEP 340: One AArch64 Port, Not Two
  • JEP 341: Default CDS Archives
  • JEP 344: Abortable Mixed Collections for G1
  • JEP 346: Promptly Return Unused Committed Memory from G1

Auf den ersten Blick sieht es nicht so viel aus, insbesondere, wenn man die langen Änderungslisten der letzten großen Releases im Hinterkopf hat, wie zum Beispiel die Lambdas und das Stream API in Java 8. Oder wenn man sich möglicherweise die Neuerungen im Fall des JDK 9 (Plattformmodulsystem, JShell, …) noch gar nicht näher angeschaut, geschweige denn verdaut hat.

Die Idee der halbjährlichen Releasezyklen ist es, dass neue Features parallel und ohne Zeitdruck, unabhängig von den nächsten Veröffentlichungsterminen entwickelt werden können. Die Aufnahme in das entsprechende Release erfolgt erst, wenn die Funktion ausgereift ist. Dadurch sind die Änderungen der einzelnen Releases natürlich überschaubar. Andererseits ist schon lange im Voraus klar, wann die nächste Version erscheinen wird; sie kann sich nicht mehr auf unbestimmte Zeit verzögern.

Switch Expressions

Wenn man die obige Featureliste durchschaut, sticht aus Entwicklersicht hauptsächlich ein Punkt ins Auge: Switch Expressions. Nun ist das Konstrukt Switch eigentlich eine Idee aus der prozeduralen Programmierung und ein Überbleibsel aus der Tatsache, dass sich die Syntax von Java initial stark an C orientiert hat. Für den erfahrenen Programmierer ist das Switch Statement aber ein Code Smell und kann im Sinne der Objektorientierung besser mit dem Strategieentwurfsmuster ausgedrückt werden. Nichtsdestotrotz gibt es Situationen, in denen man mit einem Switch sehr effizient und übersichtlich Fallunterscheidungen umsetzen kann.Allerdings hatte die Implementierung bisher einige Schwächen. So konnte man anfänglich nur auf Zahlen prüfen, ab Java 5 dann zwar auch auf Enums (verkappte Integer) und seit Java 7 immerhin auf Strings. In vielen Programmiersprachen gibt es dagegen keine Einschränkungen über die verwendbaren Datentypen. Zudem ist das in funktionalen Sprachen verbreitete Pattern Matching eine Art „Switch on Steroids“. Mit dem JEP 305 gibt es sogar Pläne, Pattern Matching in zukünftigen Java-Versionen einzuführen. Die Switch Expressions kann man schon mal als eine Art Vorgeschmack darauf verstehen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 5.19 - "Java 12"

Alle Infos zum Heft
579886728Java 12 ist da
X
- Gib Deinen Standort ein -
- or -