In JDK 6 b92-b96, these compiler (related) fixes were or will be included:
Thanks to Joe, Jon, Scott, and Wei.
Let me go through the highlights.
Jon cleaned up the linked list implementation in javac reducing the memory footprint and made it conform to java.util.List specification.
Wei added a feature that allows the compiler in JDK 6 to accept class files generated by the next version (JDK 7). Although the class file format is not yet defined, it turns out that the compiler should be able to read future class files as long as we do not add any new constant pool tags (the compiler doesn't read byte codes). Since we haven't added constant pool tags in years and generally work hard to keep class file format changes backwards compatible, the compiler should have no problem reading future class file versions. Such class files may contain features that the compiler does not understand and it will cause a warning. This is no different from when your PDF reader warns about new file versions may contain feature it does not know how to display properly.
You may ask: what's the point?
and that is a valid question.
After we shipped JDK 5.0, we noticed that a lot of customers had a
hard time getting their JSP servers running on the new release. This
was because we had changed the class file version used in rt.jar (I
mentioned this in my b83
write-up).
Finally, I completed the symbol file feature I mentioned in my
b86 write-up. The compiler
will now emit a warning if you, for example, access members of the
package sun.io. This warning cannot be suppressed, you are really not
supposed to use them