Can’t move to JDK 5.0? Many of the J2SE 5.0 language features would be just as useful for older JVMs, but the compiler that implements these features generates code that requires JDK 5.0 or later. Fortunately, there’s an open source project that bridges the gap between J2SE 5.0 and older JVMs — Retroweaver.
I saw this a few weeks ago. It’s quite impressive. You get all the perks of 5.0 on your 4.0 JVM.
Seems like it’d come in handy in quite a few places: BeOS is getting 4.0, not 5.0 – For now, Mac OS X only has 5.0 on Tiger, nothing else, etc.