Too much backward compatibility?
843793Aug 7 2003 — edited Sep 22 2004With the introduction of generics, as well as the other features of Tiger, the Java language will take a fundamental leap forward. However, the emphasis on backward compatibility is weighing it down.
For example, the introduction of enum types is a major revision in the java language and many constants that are now integral option constants should be revised to use enums. Yet we cant make these changes because of backward compatibility.
In a similar mode, and more on-topic, the various parts of the JDK that take varing kinds of collections as arguments should be revised to do so in order to make the JDK more solid and less error prone. Yet once again we are hessitating to do so because of backward compatibility.
If you combine this with other massive and apparent flaws in the JDK and add up other more minor flaws in the JDK design, I wonder if we are going in the right direction with backward compatibility. At some point we will need to snap the rubber band holding us to JDK 1.2 and revise the language and JDK completely to account for modernizations. If we fail to do so, we risk turning the JDK into a similar mess as the MFC classes for C++ windows programming; namely a mess of trying to advance the technology with tons of backward lint.
Is generics pushing us into JDK 2.0; a new version of the JDK renovated from the ground up? More importantly, is Sun willing to go this route and invest the resources needed to accomplish such a conversion? If not, how can we justify the risks that ignoring these problems place on the long term longevity of the language when faced by other challengers to the programming language kingdom?
C# is still no Java but they are developing the language on top of the lessons learned in Java. If we cant morph Java to learn these lessons, we will be caught and overtaken by C# and its power marketing by Microsoft. If it is so heavily used in its infancy, it makes me wonder what its power will be when it matures.
Generics is one of the best things that has happened to the java language but it also exposes the age of the JDK. There is a lot of decrpit and cancerous code in the core and I believe we should come up with a strategy to resolve these problems before it is too late.