In the last month or so I’ve been helping out with the port of a Math visualization application. Help out is a polite way of saying I’ve refactored a bit here or there but the other developer is doing all of the work. I’ve written a bunch of test code and I understand his design and I now have some fundamental questions that I’ll explain in this series of blog entries.

First, I wonder whether or not we should move the project to J2SE 5.0.

This is a Java application that targets college students, professors, and professional mathematicians. There may be high school students and teachers here or there who use it as well. The application should be ready in six months to a year. What in Java 5 will make a difference to the lives of an end user?

I worry whether or not moving to Java 5 will mean that there are some people who will not be able to use this application. Tiger does not seem to benefit the end user (except for some of the threading facilities that have been added). Any thoughts on this?

Moving to Tiger will make the code much cleaner. It will be easier to understand the current codebase and it will be easier for developers to add surfaces and curves that the software will represent. As I read the current code I see places to use everything from enumerated types, to generics and annotations, to the enhanced for loop. All of these features that I fought a year ago, I’m now finding what I consider to be obvious places to apply them.

Part of it may just be laziness on my part. As I’ve become accustomed to some of the Tiger conventions, it’s become less common for me to think about how I would work without them. One obvious place this comes up in the current application is in working with collections of points and vectors (vector as in ordered tuples representing derivatives). I take iterating without iterators and using generics when pulling an element out of a collection for granted now.

So this brings me to my questions:

(1) how do you decide it’s time to move to Java 5.0 - and

(2) what are your reasons for and against doing so?

Is it time for Tiger?