Einen größeren Wortschatz, bitte!

Rettender Bindestrich: Neue Keywords für Java

Dominik Mohilo

© Shutterstock / The_Pixel

Die Programmiersprache Java beinhaltet eine sehr begrenzte Anzahl an Keywords, die zur Beschreibung grundlegender Features genutzt werden. Da die Entwicklung von Java aber nicht stillsteht, kommen immer neue Funktionen hinzu, für die ein Keyword nicht verkehrt wäre. Die Gefahr besteht allerdings, dass ein neues Keyword die Integrität bereits existierender Anwendungen torpediert. Ein Bindestrich könnte die Lösung für das Problem sein…

Java ist wie New York: Es schläft nie. Auch wenn die Entwicklung und die Erneuerung anderer Sprachen vllt. ein wenig schneller vorangehen (seit dem neuen Release-Zyklus kann sich allerdings keiner mehr ob der geringen Entwicklungsgeschwindigkeit beschweren), ist Java seit gut einem Vierteljahrhundert im ständigen Wandel begriffen. Java 8 hatte Project Lambda und Closures an Bord, Java 9 brachte mit Project Jigsaw das Modulsystem, Java 10 die Typinferenz für lokale Variablen und Java 11 machte var auch für Parameter in Lambdas nutzbar.

Für manche neuen Features wäre ein eigenes Keyword (Schlüsselwort) hilfreich, doch die Anzahl dieser ist begrenzt. Problematisch ist dies allerdings, weil viele sinnvolle Schlüsselworte bereits als Bezeichner oder andere Objekte in der Sprachsyntax verankert sind – soll heißen, man hätte ggf. plötzlich eine Reihe von ASCII-Zeichen, die zwei unterschiedliche Dinge repräsentiert. Das Ergebnis kann sich jeder vorstellen. Um dieses Problem zu lösen, scheint es allerdings eine recht einfache Lösung zu geben, die Alex Buckley nun in einem JEP Draft skizziert hat.

Vorsicht vor den Keywords

Eins vorweg: Natürlich braucht nicht jede neue Funktion in Java ein neues Keyword, das ist weder Sinn noch Zweck des Vorschlags. Allerdings gibt es durchaus neue Funktionen, für die man vielleicht nicht ein existierendes Keyword highjacken und mit einer neuen Funktionalität verbinden möchte. Auch die Suche nach einer passenden Syntax für ein neues Feature, die ohne neues Schlüsselwort auskommt, ist mühselig.

In der Vergangenheit gab es auch sogenannte Token, die eine neue Funktionalität abbilden konnten – etwa -> für Lambda-Ausdrücke oder : : für den Ausdruck einer Referenz zu einer Methode. Wie Buckley schreibt bleibt aber ein „echtes“ Wort in englischer Sprache (bspw. class oder package) immer noch das Nonplusultra für die Deklarierung einer gewissen Funktionalität – KISS eben. Da es aber oben genannte Probleme für neue Keywords gibt, könnte ein einfacher Bindestrich nun zur Rettung werden.

API Summit 2019
Thilo Frotscher

API-Design – Tipps und Tricks aus der Praxis

mit Thilo Frotscher (Freiberufler)

Golo Roden

Skalierbare Web-APIs mit Node.js entwickeln

mit Golo Roden (the native web)

Klassische & kontextuelle Keywords

In Java gibt es zwei Arten von Schlüsselwörtern: klassische und kontextuelle. Diese sind immer einzigartig und werden als individuelles Token angesehen. Klassische Keywords sind dabei immer Keywords, nie Bezeichner (Identifier); kontextuelle Keywords können – das gibt der Name bereits her – Keywords oder Identifier sein, je nach Kontext, in dem sie genutzt werden.

Der Vorschlag von Alex Buckley beinhaltet nun die Möglichkeit, mit Hilfe von Bindestrichen, sogenannte Hyphenated Keywords zu erstellen. Diese wären ebenfalls in zwei Kategorien unterteilt, nämlich Hyphenated Classic Keywords und Hyphenated Contextual Keywords. Erstere vereinen klassische (einzigartige) Keywords mit Bezeichnern, Literalen oder anderen (einzigartigen) klassischen Keywords. Letztere hingegen vereinen kontextuelle (einzigartige) Keywords mit Bezeichnern, literalen und anderen (einzigartigen) kontextuellen Keywords.

Den neuen Schlüsselworten würde, sollten sie irgendwann tatsächlich fester Bestandteil der Java-Syntax werden, eine gewichtige Rolle zukommen. Der JEP Draft beinhaltet nämlich auch eine Idee, wie die Hierarchie der Nutzung aussehen sollte: Sollte man ein Keyword irgendwo im Code anführen wollen, wo ein Identifier stehen könnte, sei ein Hyphenated Classic Keyword zu verwenden (etwa non-final oder package-private). An Stellen der Deklaration (bspw. an einer Stelle, an der class stehen könnte), kann ein Hyphenated Classic Keyword oder ein Hyphenated Contextual Keyword stehen. Einzigartige klassische Keywords (also bspw. for oder int) sollen nur noch in den Fällen genutzt werden, wo eines der neuen Schlüsselworte nicht passt.

Weitere Informationen zur Einführung der neuen Hyphenated Keywords gibt es im JEP Draft, eine interessante Diskussion dazu hat sich auf der JDK-Dev-Mailing-Liste entwickelt.

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: