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.

In Pocket speichern vorlesen Druckansicht 95 Kommentare lesen
Lesezeit: 3 Min.
Von
  • Maika Möbus
Inhaltsverzeichnis

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.

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.

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.

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)