Oracle released Java 11 in September 2018, only 6 months after its predecessor, version 10, and java 11 Oracle JDK would no longer be free for commercial use.
In this blog, we’ll explore new features of Java 11:-
Open JDK
After java 10 there’s no free long-term support (LTS) from Oracle. Thankfully, Oracle continues to provide Open JDK releases, which we can download and use without charge.
New Features and Enhancements
New String Methods:
- isBlank() – This method returns the boolean value. When the string is empty it returns the true and when the string is not blank it returns the false.
public class java11NewFeatures {
public static void main(String[] args) {
// returns false
String myStr = "MyString";
System.out.println(myStr.isBlank());
// returns true
String anotherStr = "";
System.out.println(anotherStr.isBlank());
// return true
String anotherBlankStr = " ";
System.out.println(anotherBlankStr.isBlank());
}
}
- lines() – This method returns a collection of String. which are divided by line terminations(“\n”).
import java.util.stream.Collectors;
public class java11NewFeatures {
public static void main(String[] args) {
String myStr = "I\nam\ntest\nString";
System.out.println(myStr.lines().collect(Collectors.toList()));
}
}
Output:
[I, am, test, String]
- repeat(n) – This method returns the nth String which we pass in this method.
public class java11NewFeatures {
public static void main(String[] args) {
String myStr = "testString";
System.out.println(myStr.repeat(3));
}
}
Output:
testStringtestStringtestString
- stripLeading() – This method is used to remove the white space before any String.
public class java11NewFeatures {
public static void main(String[] args) {
String myStr = " testString";
System.out.println(myStr.stripLeading());
}
}
Output:
testString
- stripTrailing() – This method is used to remove the white space after the String.
public class java11NewFeatures {
public static void main(String[] args) {
String myStr = "anyString ";
System.out.println(myStr.stripTrailing());
}
}
Output:
anyString
- strip() – This method is used to remove the white space before and after the String.
public class java11NewFeatures {
public static void main(String[] args) {
String myStr = " anyString ";
System.out.println(myStr.strip());
}
}
Output:
anyString
New File Methods:
- writeString() – This method is used to write some content in the file.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class java11NewFeatures {
public static void main(String[] args) {
Path filePath = Paths.get("/home/Desktop/Files", "myFile.txt");
try
{
//Write content to file
Files.writeString(filePath, "Hello World !!", StandardOpenOption.WRITE);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
- readString() – This method is used to read content in the file.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class java11NewFeatures {
public static void main(String[] args) {
Path filePath = Paths.get("/home/Desktop/Files", "myFile.txt");
try
{
//Write content to file
Files.writeString(filePath, "Hello World !!", StandardOpenOption.WRITE);
//Verify file content
String content = Files.readString(filePath);
System.out.println(content);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Pattern recognizing methods:
- asMatchPredicate() – This method is same as Java 8 method asPredicate(), but this method will create a predicate if pattern matches with input string.
import java.util.function.Predicate;
import java.util.regex.Pattern;
public class java11NewFeatures {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("myStr");
Predicate<String> predicate = pattern.asMatchPredicate();
// return true
System.out.println(predicate.test("myStr"));
// return false
System.out.println(predicate.test("anotherStr"));
}
}
Epsilon Garbage Collector:
This handles memory allocation but does not have an actual memory reclamation mechanism. Once the available Java heap is exhausted, JVM will shut down.
Its goals are:-
- Performance testing
- Memory pressure testing
- last drop latency improvements
TimeUnit Conversion:
This method is used to convert the given time to a unit like DAY, MONTH, YEAR, and for time too.
import java.time.Duration;
import java.util.concurrent.TimeUnit;
public class java11NewFeatures {
public static void main(String[] args) {
long timeInMinutes = 25L;
long timeInSec = 600L;
long HoursInDays = 24;
// Create a TimeUnit object
TimeUnit minutes = TimeUnit.MILLISECONDS;
TimeUnit second = TimeUnit.MINUTES;
TimeUnit hours = TimeUnit.DAYS;
System.out.println("Convert Minutes to milliseconds :"
+ minutes.convert(timeInMinutes, TimeUnit.MINUTES));
System.out.println("Convert Seconds to Minutes :"
+ second.convert(timeInSec, TimeUnit.SECONDS));
System.out.println("Convert Hours to Days :"
+ hours.convert(Duration.ofHours(HoursInDays)));
}
}
Output:
Convert Minutes to milliseconds :1500000
Convert Seconds to Minutes :10
Convert Hours to Days :1
New Method in Optional Class:
- Optional.isEmpty() – This method returns true if the value of the object is null otherwise it returns false.
import java.util.Optional;
public class java11NewFeatures {
public static void main(String[] args) {
Optional optionalStr = Optional.empty();
// return true
System.out.println(optionalStr.isEmpty());
Optional anotherStr = Optional.of("MyString");
// return false
System.out.println(anotherStr.isEmpty());
}
}
Local-Variable for Lambda Parameters:
It allowed the use of var as the type of the local variable instead of the actual type. The compiler inferred the type based on the value assigned to the variable.
JDK 11 allows ‘var’ to be used in lambda expressions. This was introduced to be consistent with the local ‘var’ syntax of Java 10.
import java.util.stream.IntStream;
public class java11NewFeatures {
public static void main(String[] args) {
IntStream.of(11, 12, 13, 14, 15, 16)
.filter((var evenNo) -> evenNo % 2 == 0)
.forEach(System.out::println);
}
}
References
For more information on Java 11 Features Click here.