© Excellent backgrounds/Shutterstock.com
Java Magazin
Teil 1: Ergänzungen der Sprache und der existierenden APIs

Klein, aber fein

Wir wollen Ihnen in dieser Artikelreihe einen Überblick über die Neuerungen in Java 9 verschaffen und einige Features von Java 9 kurz erläutern. Dabei haben wir diejenigen Themen ausgewählt, von denen wir denken, dass sie für Java-Entwickler am interessantesten sind. Und natürlich werfen wir einen Blick auf die größte Neuerung: das Modulsystem.

Angelika Langer, Klaus Kreft


Video: Working with JDK 9 in Practice

Java 9 – ÜberblickTeil 1: Ergänzungen der Sprache und der existierenden APIsTeil 2: JVM Internals Teil 3: Neue und alte JDK-Tools Teil 4: Project Jigsaw aka Java Module System Teil 5: JDK-interne Packages wie sun.misc.* und ihr Ersatz Teil 6: Concurrency Updates

Collection Literals: von Java 7 nach 9

Für Java 7 hatte Sun damals die Java-Community gefragt, welche kleineren Ergänzungen an der Programmiersprache nützlich wären. Im Rahmen des sogenannten Project Coin wurden die Vorschläge gesammelt und zum Teil für Java 7 umgesetzt. Damals sind Features wie try-with-resources, switch-over-string und multi-catches dazu gekommen. Es wurden aber nicht alle Vorschläge berücksichtigt. Eine der Ideen, die liegen geblieben ist, ist die der sogenannten Collection Literals. Dabei geht es um eine kompakte Syntax für das Erzeugen von unveränderlichen Col­lections mit einigen wenigen Elementen. Der damalige Vorschlag sah so aus:

List list = #[ 1, 2, 3 ];

Für Java 9 hat man sich nun eine Lösung überlegt. Allerdings ist dafür nicht die Sprache geändert worden. Die oben gezeigte Syntax gibt es nicht. Stattdessen hat man eine Lösung in der Bibliothek gefunden [1]. In den Interfaces List, Set und Map wird es statische Factory-Methoden für das Erzeugen von unveränderlichen Col­lections geben. Das sieht dann z. B. so aus:

List list = List.of( 1, 2, 3 );

Ähnliche Factory-Methoden gibt es bereits in der Klasse Collections:

// alt:List noElement = Collections.emptyList();List oneElement = Collections.singletonList("a");// neu:List someElements = List.of("a", "b", "c");

Die neuen Factory-Methoden fügen sich also ganz natürlich in die bestehenden APIs ein.

Diamond-Operator darf an anonyme Klassen

Es gibt eine Reihe kleinerer Spracherweiterungen, die kaum wahrnehmbar sind. Dazu gehören der Diamond-Operator an anonymen Klassen, private Interfacemethoden, Underscore als Bezeichner und Effectively-final-Variablen in try-with Resources. Der Diamond-Operator wurde mit Java 7 eingeführt. Er erspart dem Entwickler bei der Initialisierung eines Objekts von einem parametrisierten Typ Schreibarbeit: Man darf beim Konstruktoraufruf leere spitze Klammern verwenden – eben den Diamond-Operator:

List list = new ArrayList(); // fine

Leider durfte man den Diamond-Operator aber nicht bei anonymen Klassen verwenden. Das nachfolgende Beispiel hat zu einer Fehlermeldung beim Kompilieren geführt:

Callable

Java Magazin
Teil 1: Ergänzungen der Sprache und der existierenden APIs

Klein, aber fein

Wir wollen Ihnen in dieser Artikelreihe einen Überblick über die Neuerungen in Java 9 verschaffen und einige Features von Java 9 kurz erläutern. Dabei haben wir diejenigen Themen ausgewählt, von denen wir denken, dass sie für Java-Entwickler am interessantesten sind. Und natürlich werfen wir einen Blick auf die größte Neuerung: das Modulsystem.

Angelika Langer, Klaus Kreft


Video: Working with JDK 9 in Practice

Java 9 – ÜberblickTeil 1: Ergänzungen der Sprache und der existierenden APIsTeil 2: JVM Internals Teil 3: Neue und alte JDK-Tools Teil 4: Project Jigsaw aka Java Module System Teil 5: JDK-interne Packages wie sun.misc.* und ihr Ersatz Teil 6: Concurrency Updates

Collection Literals: von Java 7 nach 9

Für Java 7 hatte Sun damals die Java-Community gefragt, welche kleineren Ergänzungen an der Programmiersprache nützlich wären. Im Rahmen des sogenannten Project Coin wurden die Vorschläge gesammelt und zum Teil für Java 7 umgesetzt. Damals sind Features wie try-with-resources, switch-over-string und multi-catches dazu gekommen. Es wurden aber nicht alle Vorschläge berücksichtigt. Eine der Ideen, die liegen geblieben ist, ist die der sogenannten Collection Literals. Dabei geht es um eine kompakte Syntax für das Erzeugen von unveränderlichen Col­lections mit einigen wenigen Elementen. Der damalige Vorschlag sah so aus:

List list = #[ 1, 2, 3 ];

Für Java 9 hat man sich nun eine Lösung überlegt. Allerdings ist dafür nicht die Sprache geändert worden. Die oben gezeigte Syntax gibt es nicht. Stattdessen hat man eine Lösung in der Bibliothek gefunden [1]. In den Interfaces List, Set und Map wird es statische Factory-Methoden für das Erzeugen von unveränderlichen Col­lections geben. Das sieht dann z. B. so aus:

List list = List.of( 1, 2, 3 );

Ähnliche Factory-Methoden gibt es bereits in der Klasse Collections:

// alt:List noElement = Collections.emptyList();List oneElement = Collections.singletonList("a");// neu:List someElements = List.of("a", "b", "c");

Die neuen Factory-Methoden fügen sich also ganz natürlich in die bestehenden APIs ein.

Diamond-Operator darf an anonyme Klassen

Es gibt eine Reihe kleinerer Spracherweiterungen, die kaum wahrnehmbar sind. Dazu gehören der Diamond-Operator an anonymen Klassen, private Interfacemethoden, Underscore als Bezeichner und Effectively-final-Variablen in try-with Resources. Der Diamond-Operator wurde mit Java 7 eingeführt. Er erspart dem Entwickler bei der Initialisierung eines Objekts von einem parametrisierten Typ Schreibarbeit: Man darf beim Konstruktoraufruf leere spitze Klammern verwenden – eben den Diamond-Operator:

List list = new ArrayList(); // fine

Leider durfte man den Diamond-Operator aber nicht bei anonymen Klassen verwenden. Das nachfolgende Beispiel hat zu einer Fehlermeldung beim Kompilieren geführt:

Callable

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang