Showing posts with label JDK8. Show all posts
Showing posts with label JDK8. Show all posts

Friday, August 15, 2014

New Features in JDK 5, JDK 6, JDK 7, JDK 8, JDK 9, JDK 10, JDK 11

JDK 1.5

- Generics

- Metadata

- Autoboxing and unboxing

- Enumerations

- The swing of JDK1.5 has an all-new look

- Varags

- Enhanced for each loop

- Concurrency utilities


JDK 1.6


- Improved performance(JDK 1.6 is faster )

- JavaScript that is integrated and included in the entire platform

- JDBC4 implementation

- Enhanced web services support(Client and Core Java Architecture for XML-Web Services (JAX-WS) 2.0 APIs)

- API for XML digital signature services for secure web services

- Support for Java Architecture for XML Binding (JAXB) 2.0

- improved security enhancements (Native platform security, Java Authentication and Authorization Service (JAAS), the New Smart Card I/OAPI, native security services)



JDK 7 
(July 2011)

- String in switch
- Improved Type Inference for generics instance creation

From:
Map<String, List<String>> map = new HashMap<String, List<String>>();
To:
Map<String, List<String>> map = new HashMap<>();

- Better Exception Handling (Multiple exceptions handling to eliminate duplication of codes)
Before:

try {

    // execute code that may throw 1 of the 3 exceptions below.

} catch(SQLException e) {
    logger.log(e);

} catch(IOException e) {
    logger.log(e);

} catch(Exception e) {
    logger.severe(e);
}
After:
try {

    // execute code that may throw 1 of the 3 exceptions below.

} catch(SQLException | IOException e) {
    logger.log(e);

} catch(Exception e) {
    logger.severe(e);
}
- Automatic resource management in try-statement
Try with resources:
Before:
BufferedReader br = new BufferedReader(new FileReader(path));
    try {
        return br.readLine();
    } finally {
        if (br != null) br.close();
    }
After:
try (BufferedReader br =
                   new BufferedReader(new FileReader(path))) {
        return br.readLine();
} 

- JDBC enhancement 

JDK8 
(March 2014)

- Language-level support for Lambda Expressions

- PermGen completely removed and replaced with a new space called Metaspace

- New Date and Time API
- Small VM

JDK 9
September 22, 2016

- Jshell = Java + REPL
- G1 will be the new default garbage collector
Http2Client, Java Platform Module System (JPMS),  
Multi-release jar files, Stack Walking API, Private methods in an interface, Process API updates, Collection API updates, Stream API improvements, and etc.
Below are the few differences between Java 8 and Java 9
  • In Java 8 and earlier versions, the top-level component is the package. It places a set of related types (classes, interfaces, enums, and etc) into a group, and also contains a set of resources whereas Java 9 introduces a new component: module, which can be used to place a set of related packages into a group, and also another new component: the module descriptor, module-info.java file.
  • Java 8 applications use packages as a top-level component whereas Java 9 applications use modules as a top-level component.
  • Each Java 9 module has only one module with one module descriptor whereas Java 8 package doesn't build multiple modules into a single module.