Neu in Java 12

03.12.2018 Tom Trapp
Tech Java JVM Good-to-know

Java 12 ist da! Lernen Sie hier die neuen Features kennen.

Neuer switch-Case

Es gibt zwei grosse Neuerungen im bezug auf die switch/case Funktion mit Java 12, beide sind aktuell im preview Status.

  • Neu kann der beliebte Arrow syntax auch bei switch/case Statements verwendet werden. Dadurch werden break Statements unnötig, was echt sexy ist.

  • switch-Statements können neu einen Rückgabewert haben und können so direkt als Expression verwendet werden

Der traditionelle Weg

switch (fruit) {
    case "apple":
    case "banana":
        System.out.println("tasty");
        break;
    case "citron":
        System.out.println("uuugh");
        break;
    default:
        System.out.println("ok");
}

Der neue Weg

// Arrow syntax
switch (fruit) {
    case "apple", "banana" -> System.out.println("tasty");
    case "citron" -> System.out.println("uuugh");
    default -> System.out.println("ok");
}

// Switch as an Expression
String taste = switch (fruit) {
    case "apple", "banana" -> "tasty";
    case "citron" -> "uuugh";
    default -> "ok";
}

Raw String literals

Ein anderes, neues Feature welches direkt 'The way of coding' verändert sind raw string literals.

Dies ist aktuell ebenfalls ein Preview-Feature, neu ist ein möglich, mehrzeilige Strings oder Strings mit Sonderzeichen, einfach zu erstellen.

Solche raw string literals werden mit Backticks generiert. Die neue align Methode ermögtlich es sogar, mehrzeilige String korrekt auszurichten (Indents).

Sicherlich, auf den ersten Blick ist dies ein klasse Feature, der 'Real World Use-Case' ist aber nicht sofort ersichtlich. Eventuell können so in der Zukunft SQL-Query o. ä. formatiert werden.

Der traditionelle Weg

// traditional string
final String s1 = "hello world";

// traditional multiline string
final String s2 = "line1\nline2";

Der neue Weg

// raw string literals
	final String rsl1 = `hello world`;
	final String rsl2 = `
	                    line1
	                      line2
	                        line3`;
	final String rsl3 = ``backtick`inside``;
	final String rsl4 = `\n`;

	System.out.println(rsl1);
	System.out.println(rsl2);
	System.out.println(rsl3.align());
	System.out.println(rsl4);

	System.out.println(rsl1.length());

// will print :
hello world

	                        line1
	                          line2
	                            line3
	line1
	  line2
	    line3

	backtick`inside
	2

Neues Preview-Feature

Mit Java 12 gibt es einen neuen Feature Type, genannt preview. Will man diese Features verwenden, kann man diese per Kommandozeilenparameter -enable-preview aktivieren.

Zwei Dinge sollte man bezüglich der preview-Features im Kopf behalten:

  • Die Funktionalität kann sich verändern
  • Ein Preview Feature kann zu einem offiziellen Feature promoted werden oder komplett entfernt werden

Tom Trapp – Problemlöser, Innovator, Sportler. Am liebsten feilt Tom den ganzen Tag an der moderner Software und legt viel Wert auf objektiv sauberen, leanen Code.