• IT-Karriere:
  • Services:

Programmiersprache: Java 13 bringt mehrzeilige Strings mit Textblöcken

Die Sprache Java steht im Ruf, eher umständlich zu sein. Die Entwickler versuchen aber, viel daran zu ändern. Mit der nun verfügbaren Version Java 13 gibt es etwa Textblöcke, mit denen sich endlich angenehm und ohne unnötige Umstände mehrzeilige Strings definieren lassen.

Artikel von Nicolai Parlog veröffentlicht am
Java 13 ist verfügbar und bringt einen besseren Umgang mit Strings.
Java 13 ist verfügbar und bringt einen besseren Umgang mit Strings. (Bild: Couleur/Pixabay)

Heute erscheint Java 13. Neben sonst eher unauffälligen Neuerungen erweitert das Release die Sprache um mehrzeilige String-Literale, in Javas Jargon Textblöcke oder text blocks, die mit JEP 355 eingeführt wurden. Damit lassen sich etwa beim Logging bequem längere Textausgaben erzeugen, Schnipsel in anderen Sprachen wie HTML oder JSON erstellen - was insbesondere so manche Tests lesbarer machen wird - oder gar SQL-Statements formulieren.

Zum Beispiel so:

  1. String jsonBlock = """
  2. {
  3. greeting: "Hallo",
  4. audience: "Welt",
  5. punctuation: "!"
  6. }
  7. """;

Zum Vergleich: Das Ergebnis ist identisch mit dieser klassischen und wesentlich unangenehmeren Variante:

  1. String jsonLiteral = ""
  2. + "{\n"
  3. + "\tgreeting: \"Hallo\",\n"
  4. + "\taudience: \"Welt\",\n"
  5. + "\tpunctuation: \"!\"\n"
  6. + "}\n";

Stellenmarkt
  1. QUNDIS GmbH, Erfurt
  2. SySS GmbH, Tübingen, Frankfurt am Main, München, Wien (Österreich)

Bevor man Textblöcke in Java 13 nutzen kann, muss man sie allerdings freischalten, denn sie sind zunächst nur als Feature-Vorschau enthalten. Zur Kompilierung und Ausführung auf der Kommandozeile oder im Build Tool muss an java und javac der Parameter --enable preview angehängt werden. In Eclipse gibt es in den Compiler-Optionen eine entsprechende Einstellung. In Intellij IDEA muss das Sprachlevel für das Modul passend gewählt werden.

Drei Anführungszeichen für einen Textblock

Textblöcke können überall verwendet werden, wo sonst klassische String-Literale "wie dieses" akzeptiert werden und sie haben eine einfache Syntax:

Sie beginnen mit drei Anführungszeichen und einem Zeilenumbruch. Sie enden mit drei Anführungszeichen, die entweder in der letzten Zeile des Blocks oder auf einer eigenen Zeile stehen. Innerhalb des Strings werden Escape-Sequenzen wie üblich interpretiert, die Strings sind also nicht roh.

Der Zeilenumbruch zu Beginn des Blocks wird dabei nicht Teil des abschließenden Strings. Stehen die abschließenden Anführungszeichen in einer eigenen Zeile, endet der String allerdings mit einem Zeilenumbruch; Zwischenraumzeichen in dieser Zeile, also zum Beispiel Leerzeichen und Tabs, werden nie Teil des Strings.

Da einzelne Anführungszeichen im Kontext eines Textblocks keine syntaktische Bedeutung haben, ihn also insbesondere nicht beenden, ist Escaping nicht nötig. Damit fällt die üblicherweise größte Quelle von Escape-Sequenzen weg und es wird wesentlich angenehmer, Sprachen wie HTML oder JSON in Java einzubetten.

Hat man einen Textblock im Quellcode untergebracht, ist es natürlich Aufgabe des Compilers, ihn zu verarbeiten. Wie, beleuchten die nächsten Seiten. Aber es ist sinnvoll, vorher kurz über das Ergebnis zu sprechen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Textblöcke und String-Literale sind ununterscheidbar 
  1. 1
  2. 2
  3. 3
  4. 4
  5.  


Anzeige
Hardware-Angebote
  1. täglich neue Deals bei Alternate.de

sambache 23. Sep 2019

Kurven und Graphen sind die Visualisierung von Zahlen. Symbole sind Strings der Länge 1...

Sybok 19. Sep 2019

Ach von Perl kommt es. OK, gut zu wissen. Für Murks halte ich es dennoch nicht, wenn es...

Sybok 19. Sep 2019

Ganz ehrlich: Ohne mich weiter informiert zu haben sagt mir mein Bauchgefühl auch, dass...

hl_1001 18. Sep 2019

Danke, stimmt. Habe auch bei meinem Umstieg von Java auf C# bald gesehen wie weit hinten...

CSCmdr 18. Sep 2019

Würde vielleicht helfen, ein paar Zeilenumbrüche mit entsprechenden Einrückungen zu...


Folgen Sie uns
       


Amazons FireTV Cube mit Sprachsteuerung - Test

Der Fire TV Cube ist mehr als ein Fire-TV-Modell. Er kann auf Zuruf gesteuert werden und wir zeigen im Video, wie gut das gelöst ist.

Amazons FireTV Cube mit Sprachsteuerung - Test Video aufrufen
Ryzen Mobile 4000 (Renoir): Lasst die Ära der schrottigen AMD-Notebooks enden!
Ryzen Mobile 4000 (Renoir)
Lasst die Ära der schrottigen AMD-Notebooks enden!

Seit vielen Jahren gibt es kaum Premium-Geräte mit AMD-Chips und selbst bei vermeintlich identischer Ausstattung fehlen Eigenschaften wie eine beleuchtete Tastatur oder Thunderbolt 3. Schluss damit!
Ein IMHO von Marc Sauter

  1. HEDT-Prozessor 64-kerniger Threadripper schlägt 20.000-Dollar-Xeons
  2. Ryzen Mobile 4000 AMDs Renoir hat acht 7-nm-Kerne für Ultrabooks
  3. Zen+ AMD verkauft Ryzen 5 1600 mit flotteren CPU-Kernen

Energiewende: Norddeutschland wird H
Energiewende
Norddeutschland wird H

Japan macht es vor, die norddeutschen Bundesländer ziehen nach: Im November haben sie den Aufbau einer Wasserstoffwirtschaft beschlossen. Die Voraussetzungen dafür sind gegeben. Aber das Ende der Förderung von Windkraft kann das Projekt gefährden.
Eine Analyse von Werner Pluta

  1. Energiewende Brandenburg bekommt ein Wasserstoff-Speicherkraftwerk
  2. Energiewende Dänemark plant künstliche Insel für Wasserstofferzeugung
  3. Energiewende Nordländer bauen gemeinsame Wasserstoffwirtschaft auf

Open Power CPU: Open-Source-ISA als letzte Chance
Open Power CPU
Open-Source-ISA als letzte Chance

Die CPU-Architektur Power fristet derzeit ein Nischendasein, wird aber Open Source. Das könnte auch mit Blick auf RISC-V ein notwendiger Befreiungsschlag werden. Dafür muss aber einiges zusammenkommen und sehr viel passen.
Eine Analyse von Sebastian Grüner

  1. Open Source Monitoring-Lösung Sentry wechselt auf proprietäre Lizenz
  2. VPN Wireguard fliegt wegen Spendenaufruf aus Play Store
  3. Picolibc Neue C-Bibliothek für Embedded-Systeme vorgestellt

    •  /