Suche
Für das Plus an Zeichen

JEP 227 & JEP 267: Erweiterungen im Unicode-Support

Michael Inden

© Shutterstock.com / Profit_Image

Das kürzlich erschienene Java 9 besteht aus mehr als nur Modulen und dem Projekt Jigsaw. Über 90 sogenannte JEPs (JDK Enhancement Proposals) sind Teil von Version 9 des Java Development Kits. Im achten Teil seiner Serie zu Java 9 stellt Michael Inden, Oracle-zertifizierter Java-Entwickler, die mit JDK 9 eingeführten Erweiterungen im Unicode-Support vor, die in den JEPs 227 und 267 zusammengefasst sind.

Die vorliegende Artikelserie zu Java 9 setzt sich aus Texten von Michael Indens Buch „Java 9 – Die Neuerungen“ zusammen, das beim dpunkt.verlag erschienen ist.

PS: Verpassen Sie nicht unsere Infografik zu Project Jigsaw!

Nachdem wir im ersten Teil dieser Blog-Serie diverse kleinere Änderungen in der Syntax der Sprache Java kennengelernt haben, schauten wir uns im zweiten Teil einige relevante Erweiterungen im JDK an, konkreter: im Process-API und den Collection-Factory-Methoden. Im dritten Teil ging es anschließend um die Ergänzungen im Stream-API, im vierten Teil besprachen wir die Erweiterungen in Optional<T>. Im fünften Teil der Artikelserie standen die Erweiterungen der Java-Klasse LocalDate im Fokus, in Teil sechs war die Verarbeitung von Stackframes und der Klasse StackWalker Thema. Im siebten Teil seiner Reihe stellte Michael Inden den Taskbar-Support von Java 9 vor, in Teil 8 sind die Erweiterungen des Unicode-Supports an der Reihe.

Java 9: Erweiterungen im Unicode-Support

Durch Unicode lassen sich Zeichen verschiedener Sprachen codieren, indem jedes Zeichen durch eine Nummer repräsentiert wird. Dabei gibt es immer wieder Erweiterungen im Unicode-Standard – derzeit ist Unicode 8 aktuell. Vor Java 9 wurde im JDK nur Unicode in Version 6 unterstützt. Java 9 kann nun auch mit Unicode 7 und 8 umgehen, wobei Unicode 7 Verbesserungen bezüglich bidirektionalem Text beinhaltet und Unicode 8 Neuerungen bei Emojis umfasst.

Schauen wir uns ein Beispiel an. Dort werden verschiedene neue Zeichen hinter der Markierung — aufgeführt:

public static void main(final String[] args)
{
    final String text = "Text \u00B0 \u1801 \u25D0 \u2A0C \u83fb --- " +
                        "\u1f605 \u1f310 \u1f575 \u1F917";
    System.out.println(text);
}

Startet man das obige Programm, so erlebt man eine Überraschung, weil es auf der Konsole in etwa zu folgender Ausgabe kommt und es so scheint, als ob mit Java 9 die Unicode-Zeichen aus dem neuen Unicode-8-Standard doch nicht unterstützt würden.


Darstellung des Programms UNICODE8EXAMPLE

Darstellung auf der Konsole mithilfe eines Tricks

Wenn man ein wenig nachforscht, so stellt man fest, dass Unicode-Zeichen mit einem Wert größer als hexadezimal 0xffff eine spezielle Codierung erfordern, die sogenannte Surrogates nutzt. Mit diesem Wissen kann man sich dann eine Hilfsmethode toSurrogates() und das korrespondierende Beispielprogramm wie folgt schreiben:

public static void main(final String[] args)
{
    final String text = "Text Surr \u00B0 \u1801 \u25D0 \u2A0C \u83fb --- " +
                        toSurrogates(0x1f605) + toSurrogates(0x1f310) +
                        toSurrogates(0x1f575) + toSurrogates(0x1F917);
    System.out.println(text);
}

private static String toSurrogates(final int orig)
{
    return new String(new char[]{Character.highSurrogate(orig),
                                 Character.lowSurrogate(orig)});
}

Führt man das korrigierte Programm aus, so erhält man – sofern es das Betriebssystem unterstützt – auf der Konsole eine korrekte Darstellung, wie es die folgende Abbildung zeigt.

Darstellung des Programms UNICODE8WITHSURROGATESEXAMPLE

Java 9 – Die NeuerungenMichael Indens Buch bietet einen fundierten Einstieg in Java 9 sowie einen Überblick über die umfangreichen Neuerungen in der aktuellen Version. Damit eignet sich das Buch für all jene, die ihr Java-Wissen aktualisieren wollen. Dabei helfen eine Vielzahl an Übungen, um die einzelnen Themengebiete zu vertiefen und besser zu verstehen.

Neben Änderungen an der Sprache bilden auch die Erweiterungen in diversen APIs einen Schwerpunkt. Fehlen darf hier natürlich auch nicht ein Kapitel über die fundamentalste Änderung in Java 9: Project Jigsaw. Auch fortgeschrittenere Themen wie Services und die Migration bestehender Applikationen werden besprochen. Da Java 9 auch einige Auswirkungen auf Build Tools und IDEs mit sich bringt, gibt ein Kapitel einen Überblick über den derzeitigen Stand zum Tooling rund um die neue Java-Version.

Weitere Informationenen zum Buch gibt es hier!

Verwandte Themen:

Geschrieben von
Michael Inden
Michael Inden
Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen internationalen Firmen tätig und arbeitet derzeit als Teamleiter Softwareentwicklung in Zürich. Michael Inden hat rund 20 Jahre Erfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und an mehreren Java-One-Konferenzen in San Francisco teilgenommen. Sein Wissen gibt er gerne als Trainer in Schulungen und auf Konferenzen weiter. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen, grafischen Oberflächen sowie dem Coaching von Kollegen.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.