Strategy for forward-compatibility
I am sure you are all familiar with RetroWeaver: http://retroweaver.sourceforge.net/ -- it allows you to convert JDK 1.5 class files so they run under JRE 1.2.
I suggest a similar approach but the other way. That is, we need to develop a forward-compatibility converter that would take JDK 1.2 classes and convert them to JDK 1.5 format.
Why? So Sun no longer has to worry about binary backwards-compatibility and this would free them up to implement such features as first-class citizen Generic types so that the generic type can be looked up at runtime. There are *many* changes I've seen in the past that were closed as WONTFIX because Sun (rightfully so) was concerned about binary backwards compatibility.
I suspect writing such a converter would be relatively trivial (easier than going the other way, to be sure) and would free up Java from the baggage it's collected over the years.
Say Sun decides to add Generics that are type-aware in Java 1.6. Developers can then take old libraries (3rd party code), upgrade them from Java 1.2 to Java 1.6 and have them run with newly compiled Java 1.6 classes that are not binary backwards compatible with Java 1.2.
As this process improves over time, we can perhaps use bytecode rewriters such as BCEL or ASM to convert such classes on-the-fly and provide an internal JRE mechanism for automatically dealing with binary compatibility issues.
What do you think?