JVM support for dynamic languages, with the new invokedynamic bytecode under JSR-292,[107] following the prototyping work currently done on the Multi Language Virtual Machine
Compressed 64-bit pointers[108] (available in Java 6 with -XX:+UseCompressedOops)[109]
These small language changes (grouped under a project named Coin):[110]
Strings in switch[111]
Automatic resource management in try-statement[112]
Improved type inference for generic instance creation, aka the diamond operator <>[113]
Simplified varargs method declaration[114]
Binary integer literals[115]
Allowing underscores in numeric literals[116]
Catching multiple exception types and rethrowing exceptions with improved type checking[117]
Concurrency utilities under JSR 166[118]
New file I/O library (defined by JSR 203) adding support for multiple file systems, file metadata and symbolic links. The new packages are java.nio.file, java.nio.file.attribute and java.nio.file.spi[119][120]
Timsort is used to sort collections and arrays of objects instead of merge sort
Library-level support for elliptic curve cryptography algorithms
An XRender pipeline for Java 2D, which improves handling of features specific to modern GPUs
New platform APIs for the graphics features originally implemented in version 6u10 as unsupported APIs[121]
Enhanced library-level support for new network protocols, including SCTP and Sockets Direct Protocol