JDK 1.5 introduced many new language features and patterns including generics, autoboxing, varargs, enums, enhanced for loops, and annotations. It also improved concurrency support and tools. Generics allow stronger typing by making collections type-safe. Autoboxing automates wrapping primitives for object-oriented code.