Here is a summary of the useful features that were introduced in Java 5.
• Generics simplify code
Adds compile-time type safety and eliminates the necessity for type casting without any performance hit
• Enhanced For loops - also known as For/Each
Simplifies looping code but does not make the iterator visible. Loops through each entry of the collection/array returning one properly cast value at a time for processing - without requiring to define an Iterator.
• Typesafe Enums
Better than public static final String variables - allows us to create enumerated types with arbitrary methods and fields
• Metadata Annotations
Reduces coding issues like overloading instead of overriding with the use of pre-defined annotations. Allows
for a more declarative style of programming reducing boiler-plate code with user-defined annotations.
• Varargs provides flexibility
Methods can accept a multiple number of parameters defined at runtime with a few restrictions - they have to be the last set of parameters of the method and all have to be of the same data type. The ellipsis "…" is used to indicate that the argument might appear a variable number of times.
• Auto Boxing / Unboxing
Implicit conversion between primitives and their wrapper classes - convenient, but can have lower performance as primitives are stored on the stack while the actual objects are stored in the heap.
• Synchronization changes in java.util.concurrent package
Introduction of Locks concept to provide better semantics than "synchronized" keyword and many more useful features like Read/Write locks.
• Static import
Makes code more readable and reduces redundant typing for qualifying the static members (methods & fields) of a class with the class name in each occurance
• Performance improvements with better GC, StringBuilder, etc
• Formatter allows for better printing with printf
No more clumsy println's with string concatenation - use C-style printf with format strings.
• Scanner simplifies basic parsing
Easier than String.split and Integer.parseInt
These are too numerous and important to detail all of them in a single post - so each will be covered in detail with code examples in posts of their own soon.
Check out the Summary of Java 7 features that make Java even better!