Using string literals in switch statements
Using underscores in literals to improve code readability
Using the try-with-resources block to improve exception handling code
Creating a resource that can be used with the try-with-resources technique
Catching multiple exception types to improve type checking
Rethrowing exceptions in Java 7
Using the diamond operator for constructor type inference
Using the @SafeVarargs annotation
Locating Files and Directories Using Paths
Interoperability between java.io.File and java.nio.file.Files
Converting a relative path into an absolute path
Removing redundancies by normalizing a path
Combining paths using path resolution
Creating a path between two locations
Determining whether two paths are equivalent
Obtaining File and Directory Information
Determining the file content type
Obtaining a single attribute at a time using the getAttribute method
Obtaining a map of file attributes
Getting file and directory information
Determining operating system support for attribute views
Maintaining basic file attributes using the BasicFileAttributeView
Maintaining POSIX file attributes using the PosixFileAttributeView
Maintaining FAT table attributes using the DosFileAttributeView
Maintaining file ownership attributes using the FileOwnerAttributeView
Maintaining a file's ACL using the AclFileAttributeView
Maintaining user-defined file attributes using the UserDefinedFileAttributeView
Managing Files and Directories
Creating files and directories
Controlling how a file is copied
Managing temporary files and directories
Setting time-related attributes of a file or directory
Getting Filesystem information
Using the SimpleFileVisitor class to traverse filesystems
Deleting a directory using the SimpleFileVisitor class
Copying a directory using the SimpleFileVisitor class
Processing the contents of a directory by using the DirectoryStream interface
Filtering a directory using globbing
Writing your own directory filter
Monitoring file events using WatchEvents
Understanding the ZIP filesystem provider
Graphical User Interface Improvements
Mixing heavyweight and lightweight components
Managing the opacity of a window
Creating a varying gradient translucent window
Managing the shape of a window
Using the new border types in Java 7
Handling multiple file selection in the FileDialog class
Controlling the print dialog box type
Using the new JLayer decorator for a password field
Managing extra mouse buttons and high resolution mouse wheels
Controlling a focus when displaying a window
Using secondary loops to mimic modal dialog boxes
Handling spurious thread wakeups
Handling applet initialization status with event handlers
Database, Security, and System Enhancements
Using the ExtendedSSLSession interface
Using the platform MXBeans for JVM or system process load monitoring
Redirecting input and output from operating system's processes
Embedding a JNLP file in an HTML page
Using join/fork framework in Java
Using the reusable synchronization barrier Phaser
Using the new ConcurrentLinkedDeque safely with multiple threads
Using the new LinkedTransferQueue class
Supporting multiple threads using the ThreadLocalRandom class
Using the Currency class in Java 7
Using the NumericShaper.Range enumeration to support the display of digits
JavaBean enhancements in Java 7