List of Major Java 7 Features – How java programming language has changed in JDK 7

java_logo
Ever wondered what things change in java SE from Java 6 to Java 7 version? Complete list is located here but I am going to focus on the language change. I have provided examples to make it more clear wherever applicable.

  1. The integral types byte, short, int and long can also be expressed as binary number by adding prefix 0b. Some examples below.
    int five = 0b101;
    long someLong = 0b1010000101000101101000010100010111100001010001011010000101000101L;
    
  2. Underscores in Numeric Literals for readability.
    long million = 1_000_000_000L;
    double length = 123_234.045_456
    
  3. You can now use String in switch statement
  4. Improvement to Generics – No longer need to specify type in both left and right side. Diamond still required to avoid warning.
    e.g. Map<String, List> myMap = new HashMap<>();
  5. Try-with-resources Statement
    try (BufferedReader br = new BufferedReader(new FileReader(path))) {
    return br.readLine();
    }
    

    In the example above br will be closed regardless of whether the statements within the try block executed normally or got exception. There can be multiple resources defined within the try parenthesis. If there are multiple resources, the last resource is closed first, the first one is closed last.

    try (
    BufferedReader reader = new BufferedReader(new FileReader(path));
    BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
    ) {
    }
    

    In this example, writer gets closed first, then the reader gets closed.

  6. Multiple Exception Handling
    catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
    }
    
  7. Rethrowing Exceptions with Improved Type Checking
    public void rethrowException(String exceptionName) throws FirstException, SecondException {
    try {
    // ...
    }
    catch (Exception e) {
    throw e;
    }
    }
    

    Only FirstException and SecondException are thrown (even if they are declared to be children of Exception). All other exceptions are caught.