views:

92

answers:

4

As I'm sitting here modifying PircBot, I've just noticed that the entire backend was written to support Java 1.1. It has a custom queue implementation, uses hash tables, custom producer/consumer implementations based on wait() and notify() signaling, etc. Even Commons-lang lacks any support for things that Java 5 brings to the table like generics. You can pull a bunch of other examples of very popular frameworks that try as hard as they can to support 1.1.

My question is why? Why are certain parts of the Java community refusing to support new versions? I go by this theory: Old versions use older versions of frameworks and older JVMs, newer versions use upgraded frameworks and JVMs. You upgrade everything with the software.

Now I can partially understand people still running Java 1.5, but 1.1? If your running anything before that then your obviously not upgrading the JVM because of stupid policies/scared of the unkown, and therefor aren't going to upgrade to newer versions of software. So why are we still supporting them?

On a related note, if you are writing a new framework should you support anything <1.5? Should you try forking existing frameworks, upgrading it to 1.5, then talk to the maintainers about using it?

Much more specific discussions (this is about support in general): http://stackoverflow.com/questions/1185359/is-there-still-a-good-reason-to-support-jdk-1-4

http://stackoverflow.com/questions/1101208/dropping-support-for-jre-1-3

+2  A: 

Because its easy! From Java 1.1 to Java 1.4 just tiny language features were introduced (strictfp for example). So why restrict yourself if you don't need to. So lets say you write a StringUtil class or you parse Word files then is simply does't matter. Just starting with Java 5 you have language improvement and from Java 1.0 to Java 1.1 of course inner classes.

This is just for the language and not so much for the libraries. There are interesting additions of course.

Christian Ullenboom
+1  A: 

I think the most common reason is, that new features introduced in later versions are not used anyway. I mean, if a library does not use new features like generics or advanced concurrency features, there is no compatibility overhead at all.

PartlyCloudy
+1  A: 

Backward compatability?

Changing the level of JVM support, should warrant a major release. I.e. version 1.x goes to 2.x to indicate this.

Also I believe to have read that to get most coverage in mobile phones, you need to target 1.1. That may be old though.

Thorbjørn Ravn Andersen
+1  A: 

I know of at least one commercial enterprise that decided they would never move beyond 1.1 so that they could run forever on both java JVMS and .NET with the same source code.

EJP
I'll be sure never to work for that company. *Enforced* support of 1.1 would be painful
TheLQ