You can follow the latest updates in Java here: Java-version.com

What’s new in Java 11 (Open JDK)

Some of the new features in Java 11

In this page we will list some of the new features of Java 11 (from 9 to 11) relevant for the daily activity of business application developers.

Local-variable type inference

With Java 11 is possible to declare local variable with type inference with initializer (keyword var).

// words is of type String[]
var words = new String[] {"abc", "def"};

Assertions.assertTrue(words instanceof String[]);

// the initializer is mandatory
// dataList is of type ArrayList
var dataList = new ArrayList();

dataList.addAll(Arrays.asList(words));
Assertions.assertEquals("abc", dataList.get(0));
Assertions.assertEquals("def", dataList.get(1));

##Features in the String class lines A new method lines() creates a Stream with the lines of the String.

@Test
public void stringCountTest() {

  String text = "line 1\nline 2\nline3";

  // the new lines method return a Stream
  assertTrue(text.lines() instanceof Stream);

  // each element in the stream represents a line of the input string
  assertEquals(3, text.lines().count());
}

strip - stripLeading - stripTrailing strip eliminates the whitespaces at the beginning and at the end of a String.

@Test
public void stripTest() {
  
  String example = "      leading and trailing spaces      ";

  assertEquals("leading and trailing spaces", example.strip());
  assertEquals("leading and trailing spaces      ", example.stripLeading());
  assertEquals("      leading and trailing spaces", example.stripTrailing());
}

isBlank isBlank() returns true if the String is empty or it contains only whitespaces.

@Test
public void isBlankTest() {

  assertTrue("     ".isBlank());
  assertTrue("".isBlank());

}

repeat repeat composes a string repeating its content for a defined number of times.

@Test
public void repeatTest() {
  
  assertEquals("abc abc abc ", "abc ".repeat(3));
  assertEquals("", "abc ".repeat(0));

}

Optional

Optional get a new method to check if the value is not present: isEmpty()

@Test
public void isEmptyTest() {
  Optional<Integer> evaluate = Optional.of(5);
  Assertions.assertFalse(evaluate.isEmpty());
}