To maintain backward compatibility, Java 3 could have a mechanism to switch between new and old implementations. It could be as simple as switching runtime class libraries and jvm implementations for single application and old jvm and runtime could be taken from older Java 2 implementation (probably bug fixed etc.). Something has to be done about Swing, it can just as well be replaced with eclipse's SWT or a library with similar approach. In many cases Swing applications have sub-par UI performance and look too different from native windowing system, confusing users and as an example, looking outdated on Windows XP. The Look & Feel idea in Swing is good and could resolve the looks problem but to build a new layer on top of something so heavy already, will only make user experience worse.