For those who don't read slashdot, here's an interview with Joshua Bloch, about new features in Java 1.5. Topics covered:|
- Generics - Provides compile-time type safety for collections and eliminates the drudgery of casting.
- Enhanced for loop - Eliminates the drudgery and error-proneness of iterators.
- Autoboxing/unboxing - Eliminates the drudgery of manual conversion between primitive types (such as int) and wrapper types (such as Integer).
- Typesafe enums - Provides all the well-known benefits of the Typesafe Enum pattern without the verbosity and the error-proneness.
- Static import - Lets you avoid qualifying static members with class names, without the shortcomings of the Constant Interface antipattern.
- Metadata - Lets you avoid writing boilerplate code, by enabling tools to generate it from annotations in the source code. This leads to a "declarative" programming style where the programmer says what should be done and tools emit the code to do it.
The last one, metadata, is the most surprising to me. At first glance, it seems like a blatant copy of C#'s attributes. I wonder whether this kind of feature will eventually evolve into a repackaging of the CLOS meta-object protocol?