Simple question - when writing Java code, should I use the new features in Java 5.0, and thus not allow my code to work with older versions of Java?
There are, after all, some compelling reasons to do so.
In particular, I love Generics - I use Collections a lot, and being able to tell Java that the collection contains objects of a given (often fixed) type makes code so much cleaner. And again working with collections a lot, the enhanced for loop is a big win.
The question still remains - is backwards compatibility more important?
(I never found anything compelling in Java 1.4 to make breaking compatibility with 1.3 worthwhile, but the changes in 5.0 are a different matter.)