OpenJDK: Java 18 nutzt standardmäßig UTF-8

Die Referenzimplementierung von Java 18, das OpenJDK 18, ist offiziell erschienen. Das teilt wie üblich der Oracle-Angestellte und langjährige Java-Entwickler Mark Reinhold auf der Mailing-Liste mit(öffnet im neuen Fenster) . Als Standardzeichensatz nutzt die Programmiersprache damit nun UTF-8 ( JEP 400(öffnet im neuen Fenster) ). Dazu heißt es: "Mit dieser Änderung verhalten sich APIs, die vom Standardzeichensatz abhängen, über alle Implementierungen, Betriebssysteme, Gebietsschemas und Konfigurationen hinweg konsistent."
Die Nutzung von UTF-8 soll Java-Programme vor allem leichter portierbar machen. Zur Motivation der Änderung heißt es zum bisherigen Verhalten: "Wenn kein Zeichensatzargument übergeben wird, verwenden standardmäßige Java-APIs normalerweise den Standardzeichensatz. Das JDK wählt den Standardzeichensatz beim Start basierend auf der Laufzeitumgebung: dem Betriebssystem, dem Gebietsschema des Benutzers und anderen Faktoren" . Auf Grund der großen Unterschiede berge dies "selbst für erfahrene Entwickler viele nicht offensichtliche Gefahren" . Die Festlegung auf UTF-8 soll genau dies überwinden.
Webserver und Resolver-Schnittstelle
Zu Java hinzugekommen ist in Version 18 außerdem ein minimaler Webserver ( JEP 408(öffnet im neuen Fenster) ), der ausschließlich statische Dateien hosten kann. Funktionen wie CGI oder ähnliches gebe es nicht. Genutzt werden soll der Server zum Prototyping, für schnelle Coding-Experimente oder zum Testen, vor allem im Bildungskontext. Sicherheitsfunktionen oder Optimierungen werden explizit nicht geboten. Durch den neuen Webserver soll das JDK einfacher zugänglich werden.
Eingeführt hat das Team außerdem "eine Service-Provider-Schnittstelle (SPI) für die Auflösung von Hostnamen und Adressen, sodass java.net.InetAddress andere Resolver als den integrierten Resolver der Plattform verwenden kann" . Mit dieser neuen Möglichkeit zur Namensauflösung ( JEP 418(öffnet im neuen Fenster) ) soll explizit kein neuer Resolver erstellt werden. Vielmehr soll das SPI das Testen von Resolvern vereinfachen, bessere Kontrollmöglichkeiten über den genutzten Resolver bieten, Protokolle wie DNS über QUIC, TLS oder HTTPS leichter nutzbar machen und das Project Loom(öffnet im neuen Fenster) besser unterstützen.
Das JDK 18 bietet außerdem Code Snippets in der Java API Dokumentation ( JEP 413(öffnet im neuen Fenster) ), eine Reimplementierung von Core Reflection ( JEP 416(öffnet im neuen Fenster) ), eine Vektor API ( JEP 417(öffnet im neuen Fenster) ) sowie Verbesserungen für das Foreign Function & Memory API ( JEP 419(öffnet im neuen Fenster) , Second Incubator) und das Pattern Matching für Switch-Anweisungen ( JEP 420(öffnet im neuen Fenster) , Second Preview).



