Skip to main content

Command Palette

Search for a command to run...

Java 11 new feature

Updated
2 min read
Java 11 new feature

Java 11 introduced several features and enhancements. Here's a list of some notable features along with examples:

  • Local-Variable Syntax for Lambda Parameters:

    • In Java 11, you can use var in lambda expressions.
    // Before Java 11
    BiFunction<Integer, Integer, Integer> add = (Integer a, Integer b) -> a + b;

    // With Java 11
    BiFunction<Integer, Integer, Integer> add = (var a, var b) -> a + b;
  • HTTP Client Updates:

    • A modern HTTP Client API was introduced.
    import java.net.URI;
    import java.net.http.HttpClient;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.util.concurrent.CompletableFuture;

    public class HttpClientExample {
        public static void main(String[] args) {
            // Create an instance of the HTTP client
            HttpClient httpClient = HttpClient.newHttpClient();

            // Define the URI for the GET request
            URI uri = URI.create("https://jsonplaceholder.typicode.com/posts/1");

            // Build the GET request
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(uri)
                    .GET()
                    .build();

            // Send the GET request asynchronously and handle the response
            CompletableFuture<HttpResponse<String>> responseFuture = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString());

            // Use CompletableFuture to handle the response when it is available
            responseFuture.thenAccept(response -> {
                // Check if the request was successful (HTTP status code 200)
                if (response.statusCode() == 200) {
                    // Print the response body
                    System.out.println("Response Body:");
                    System.out.println(response.body());
                } else {
                    System.out.println("Request failed with status code: " + response.statusCode());
                }
            }).join();  // Wait for the CompletableFuture to complete
        }
    }
  • String Methods:

    • New methods were added to the String class.
    String str = "   Hello, Java 11!   ";
    System.out.println(str.isBlank());          // Output: false
    System.out.println(str.strip());            // Output: Hello, Java 11!
    System.out.println(str.lines().count());    // Output: 1
  • Nashorn JavaScript Engine Deprecated:

    • The Nashorn JavaScript Engine was deprecated.
  • Epsilon: A No-Op Garbage Collector:

    • The Epsilon garbage collector is a no-op garbage collector, useful for performance testing and memory-limited environments.
    -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
  • Launch Single-File Source-Code Programs:

    • You can launch a single-file Java source-code program directly, without compiling it explicitly.
    // Before Java 11
    // javac HelloWorld.java
    // java HelloWorld

    // With Java 11
    // java HelloWorld.java
  • ZGC: A Scalable Low-Latency Garbage Collector:

    • The Z Garbage Collector (ZGC) was introduced as an experimental feature for low-latency applications.
    -XX:+UnlockExperimentalVMOptions -XX:+UseZGC
  • Flight Recorder:

    • Java Flight Recorder (JFR) was open-sourced, allowing developers to use it without a commercial license.
    // Enable Flight Recorder
    -XX:StartFlightRecording
  • TLS 1.3:

    • Java 11 supports TLS 1.3 for secure communication.
    // Enable TLS 1.3
    -Djdk.tls.client.protocols=TLSv1.3

These are some of the notable features introduced in Java 11. Keep in mind that this is not an exhaustive list, and Java continues to evolve with each new release.

More from this blog

Navnit Raj

20 posts

Seasoned software developer specializing in Java Angular and various other cutting-edge technologies.My goal is to bring expertise,creativity, and a collaborative spirit to every development endeavor