Programmiersprache: Java 18 erhebt UTF-8 zum Standard
Die Non-LTS-Version bringt die zweite Preview für Pattern Matching, UTF-8 als Standardzeichensatz und einen minimalen Webserver für Testing und Debugging.
- Maika Möbus
Pünktlich ist das halbjährliche Java-Release erschienen: Java 18 (Oracle JDK 18) ist aus der Zusammenarbeit zwischen Oracle-Entwicklern und der Java-Entwickler-Community – im Rahmen des OpenJDK Project und des Java Community Process (JCP) – entstanden.
Java 18 erhält planmäßig keinen Long-Term Support (LTS), bringt jedoch neue Funktionen für eine erhöhte Performance, Stabilität und Sicherheit mit. Insgesamt haben es neun JEPs (Java Enhancement Proposals) in die neue Version der Programmiersprache geschafft. Auch bestehende Features erhalten Neuerungen: Die zweite Preview von Pattern Matching für Switch Expressions und Switch Statements hält im Vergleich zur ersten Preview zwei Änderungen bereit.
Pattern Matching wird lesbarer und präziser
Die erste Preview von Pattern Matching für Switch Expressions und Switch Statements steht seit September 2021 im aktuellen LTS-Release Java 17 bereit. Java 18 bringt die zweite Preview für das Feature, das zugehörige JEP 420 beschreibt die Neuerungen im Detail.
Das Dominance Checking erzwingt nun, dass ein konstantes Case Label vor einem Guarded Pattern des gleichen Typs stehen muss. Diese Änderung soll die Lesbarkeit verbessern, wie ein Beispiel zeigt:
switch(o) {
case -1, 1 -> ... // Special cases
case Integer i && i > 0 -> ... // Positive integer cases
case Integer i -> ... // All the remaining integers
default ->
}
Demnach sind die Case Labels so angeordnet, dass konstante Labels vor Guarded Pattern Labels erscheinen, und diese wiederum vor Non-guarded Type Pattern Labels.
Die zweite Neuerung für das Pattern Matching betrifft das Exhaustiveness Checking von Switch-Blöcken, das aufgrund versiegelter Hierarchien (Sealed Hierarchies) präziser geworden sein soll. Beide Neuerungen sowie das Prinzip hinter Pattern Matching für Switch-Ausdrücke, mit dem Ziel knapper und sicherer Ausdrücke komplexer datenorientierter Queries, lassen sich in JEP 420 nachlesen.
UTF-8 als Standardzeichensatz
Java 18 legt für Standard-Java-APIs als Standardzeichensatz UTF-8 fest, wie in JEP 400 beschrieben. Somit sollen sich APIs, die auf dem Standardzeichensatz beruhen, über alle Implementierungen, Betriebssysteme, Locales und Konfigurationen hinweg einheitlich verhalten. Das soll beispielsweise Java-Programme besser vorhersehbar und portabler machen.
Einige JEPs spezifizieren sowohl Ziele als auch Nicht-Ziele, sogenannte Non-Goals. Als erklärtes Nicht-Ziel des JEP 400 gilt es etwa, neue Standard-Java-APIs oder unterstützte JDK-APIs zu definieren. Auch ist nicht geplant, Standard-Java-APIs als deprecated (veraltet) zu markieren oder zu entfernen, die sich auf den Standardzeichensatz berufen, anstatt einen expliziten Zeichensatzparameter zu nutzen.
Simple Web Server
Der Simple Web Server ist in Java 18 ebenfalls mit an Bord: Die Programmiersprache bietet nun ein Befehlszeilenwerkzeug, um einen minimalen Webserver zu starten, der einzig als Server für statische Dateien dient. CGI- und Servlet-ähnliche Funktionen sind darin nicht enthalten. Der Simple Web Server soll sich für Prototyping, Ad-hoc-Coding und Testing eignen, vor allem in Lehrkontexten.
Als Ziel erklärt das zugehörige JEP 408 einen out-of-the-box statischen HTTP-Dateiserver mit einfachem Setup und minimalen Funktionen. Nicht als Ziel gilt dagegen, Sicherheitsfunktionen wie Authentifizierung, Zugangskontrolle oder Verschlüsselung zu bieten – der Server ist bewusst nur auf Testing, Entwicklung und Debugging ausgelegt.
Java 18 steht bei Oracle zum Download bereit und erhält laut Roadmap Support bis September 2022, wenn Java 19 erscheint. Alle Neuerungen zeigen die Release Notes.
(mai)