Tuesday, June 21, 2022

Java_11_Features - ALL

 Table of Contents 

  • 11.1. New String Methods:
  • 11.2. New File Methods
  • 11.3. Pattern Recognizing Methods
  • 11.4. Epsilon Garbage Collector
  • 11.5. Removed the Java EE and CORBA modules
  • 11.6. Removal of thread functions
  • 11.7. TimeUnit Conversion
  • 11.8. Local-Variable Syntax for Lambda Parameters
  • 11.9 Removed Features and Options
  • 11.10 Deprecated Features and Options
  • 11.11 Miscellaneous Changes
  •  

    Important Changes and Information

    • The deployment stack required for running applets and web applications has been removed from JDK which was deprecated in JDK 9.
    • An entire section of supported browsers has been removed from the list of supported configurations due to the unavailability of the deployment stack.
    • Auto-update has been removed from JRE installations in Windows and macOS.
    • JavaFX and Java Mission Control is now available as a separate download.
    • Java language translation for French, German, Italian, Korean, Portuguese (Brazilian), Spanish, and Swedish is no longer provided.
    • In this version, JRE or Server JRE is no longer offered. Only JDK is offered.
    • Updated packaging format for Windows has changed from tar.gz to .zip
    • Updated package format for macOS has changed from .app to .dmg

    11.1. New String Methods:

    isBlank(): This is a boolean method. It just returns true when a string is empty and vice-versa.

    // Java Program to demonstrate
    // the working of isBlank() method
     
    class GFG {
        public static void main(String args[])
        {
            String str1 = "";
            System.out.println(str1.isBlank());
     
            String str2 = "Veer";
            System.out.println(str2.isBlank());
        }
    }
    Output
    true
    false

    lines(): This method is to return a collection of strings that are divided by line terminators.

    // Java Program to demonstrate
    // the working of lines() method
     
    import java.util.*;
     
    class GFG {
        public static void main(String args[])
        {
            String str = "Geeks\nFor\nGeeks";
            System.out.println(
                str.lines().collect(Collectors.toList()));
        }
    }

    Output

    Geeks
    For
    Geeks

    repeat(n): Result is the concatenated string of original string repeated the number of times in the argument.

    // Java Program to demonstrate
    // the working of repeat() method
     
    class GFG {
        public static void main(String args[])
        {
            String str = "Veer";
            System.out.println(str.repeat(4));
        }
    }
    Output
    VeerVeerVeerVeer

    stripLeading(): It is used to remove the white space which is in front of the string

    // Java Program to demonstrate
    // the working of stripLeading() method
     
    class GFG {
        public static void main(String args[])
        {
            String str = " Veer";
            System.out.println(str.stripLeading());
        }
    }
    Output
    Veer

    stripTrailing(): It is used to remove the white space which is in the back of the string

    // Java Program to demonstrate
    // the working of stripTrailing() method
     
    class GFG {
        public static void main(String args[])
        {
            String str = "Veer ";
            System.out.println(str.stripTrailing());
        }
    }
    Output
    Veer

    strip(): It is used to remove the white spaces which are in front and back of the string

    // Java Program to demonstrate
    // the working of strip() method
     
    class GFG {
        public static void main(String args[])
        {
            String str = " Veer ";
            System.out.println(str.strip());
        }
    }
    Output
    Veer

    11.2. New File Methods

    writeString(): This is to write some content in a file.

    jshell>Files.writeString(Path.of(example.txt), "Veer!");

    readString(): This is used to read the contents of a file.

    jshell>Files.readString(Path.of(example.txt));
    
    Output: "Veer!"

    isSameFile(): This method is used to know whether two paths locate the same file or not.

    jshell>Files.isSameFile(Path.of("example1.txt"), Path.of("example1.txt"));
    Output: true
    
    jshell>Files.isSameFile(Path.of("example2.txt"), Path.of("example1.txt"));
    Output: false

    11.3. Pattern Recognizing Methods

    asMatchPredicate(): This method is similar to Java 8 method asPredicate(). Introduced in JDK 11, this method will create a predicate if the pattern matches with the input string.

    jshell>var str = Pattern.compile("aba").asMatchPredicate();
    
    jshell>str.test(aabb);
    Output: false
    
    jshell>str.test(aba);
    Output: true

    11.4. 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

    11.5. Removed the Java EE and CORBA modules
    These modules were deprecated in Java 9 with a declaration to remove those in further JDK versions.


    11.6. Removal of thread functions

    stop(Throwable obj) and destroy() objects that have been removed from the JDK 11 because they only throw UnSupportedOperation and NoSuchMethodError respectively. Other than that, they were of no use. 


    11.7. TimeUnit Conversion

    This method is used to convert the given time to a unit like DAY, MONTH, YEAR, and for time too.

    jshell>TimeUnit c = TimeUnit.DAYS;
    Output: DAYS
    
    jshell>c.convert(Duration.ofHours(24));
    Output: 1
    
    jshell>c.convert(Duration.ofHours(50));
    Output: 2

    Optional.isEmpty(): This method returns true if the value of any object is null and else returns false.

    jshell>Optional str = Optional.empty();
    jshell>str.isEmpty();
    Output: true
    
    jshell>Optional str = Optional.of("TonyStark");
    jshell>str.isEmpty();
    Output: false

    11.8. Local-Variable Syntax for Lambda Parameters

    JDK 11 allows ‘var’ to be used in lambda expressions. This was introduced to be consistent with the local ‘var’ syntax of Java 10.

    // Java program to show the Variable
    // used in the lambda expression
     
    public class VarInLambdaExample {
        public static void main(String[] args)
        {
            IntStream.of(1, 2, 3, 5, 6, 7)
                .filter((var i) -> i % 2 == 0)
                .forEach(System.out::println);
        }
    }

    Output: 

    2
    6

    // Variable without using lambda expression
     
    public class WithoutVarInLambdaExample {
        public static void main(String[] args)
        {
            IntStream.of(1, 2, 3, 5, 6, 7)
                .filter(i -> i % 2 == 0)
                .forEach(System.out::println);
        }
    }

    Output: 

    2
    6

    11.9 Removed Features and Options

    1. Removal of com.sun.awt.AWTUtilities Class
    2. Removal of Lucida Fonts from Oracle JDK
    3. Removal of appletviewer Launcher
    4. Oracle JDK’s javax.imageio JPEG Plugin No Longer Supports Images with alpha
    5. Removal of sun.misc.Unsafe.defineClass
    6. Removal of Thread.destroy() and Thread.stop(Throwable) Methods
    7. Removal of sun.nio.ch.disableSystemWideOverlappingFileLockCheck Property
    8. Removal of sun.locale.formatasdefault Property
    9. Removal of JVM-MANAGEMENT-MIB.mib
    10. Removal of SNMP Agent
    11. Removal of Java Deployment Technologies
    12. Removal of JMC from the Oracle JDK
    13. Removal of JavaFX from the Oracle JDK
    14. JEP 320 Remove the Java EE and CORBA Modules

    11.10 Deprecated Features and Options 

    1. ThreadPoolExecutor Should Not Specify a Dependency on Finalization
    2. JEP 335 Deprecate the Nashorn JavaScript Engine
    3. Deprecate -XX+AggressiveOpts
    4. Obsolete Support for Commercial Features
    5. Deprecate Stream-Based GSSContext Methods
    6. JEP 336 Deprecate the Pack200 Tools and API

    11.11 Miscellaneous Changes

    • New ChaCha20 and ChaCha20-Poly1305 cipher implementations replace the insecure RC4 stream cipher
    • Support for cryptographic key agreement with Curve25519 and Curve448 replace the existing ECDH scheme
    • Upgraded Transport Layer Security (TLS) to version 1.3 brings security and performance improvements
    • Introduced a low latency garbage collector, ZGC, as an experimental feature with low pause times
    • Support for Unicode 10 brings more characters, symbols, and emojis

    You may also like

    Kubernetes Microservices
    Python AI/ML
    Spring Framework Spring Boot
    Core Java Java Coding Question
    Maven AWS