Q: All the cool kids are using Java 5.0 or later. Why are you using Java 1.4?
A: Because v1.4 runs on MacOS X v10.3, which means if you want your Java code to run on 10.3, you need to use Java 1.4.2. And because I’m a bit of a simplicity person: while generics, the new for(;;) loop syntax, and auto-boxing is cool (and nice and useful and all that), they don’t really matter to me all that much.
One of the reasons why such compiler-time tools are useful to many programmers (as I discover time and time to my chagrin where I work) is that many are too lazy to actually test their damned code by at least stepping through the newly written stuff before checking it in. So having auto-boxing and typesafe enums allows more stuff to be found at compile time because some programmers don’t bother to check it at run-time is a good thing: it just takes one idiot programmer who doesn’t check his work to ruin your whole day.
Me; I single-step through my code as I write it. In my opinion, if your project requires more steps to debug than opening up the project file in your IDE and pressing the “debug” button, the build process for your project is hopelessly broken and a defect should be filed immediately. So unless it means there is something subtle going on (like in the CIMMail project, natch, which causes one transaction in a thousand to screw up), or unless you misunderstood the specifications, your code will be relatively solid and reliable the first time around.