- 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
- Upstream updates to XML and Unicode
- Java deployment rule sets