Java is actually very good at backwards compatibility - sometimes IMHO going annoyingly far, like type erasure on collections. Java 6 bytecode will run on the Java 7 JVM, and Java 6 source will compile with the Java 7 JDK, modulo one or two incompatibilities [1]. Oracle 'highly recommend' you uninstall old versions [2].
On the other hand, when I install the Google App Engine Python SDK on Ubuntu it causes my hex editor to stop working. And I use some Ruby software where getting it working meant a nasty fight with xcode and rvm, which left me fearful that if I ever upgrade, reinstall or switch computers I'll never get it working again :) admittedly my knowledge of ruby is pretty weak.
On the other hand, when I install the Google App Engine Python SDK on Ubuntu it causes my hex editor to stop working. And I use some Ruby software where getting it working meant a nasty fight with xcode and rvm, which left me fearful that if I ever upgrade, reinstall or switch computers I'll never get it working again :) admittedly my knowledge of ruby is pretty weak.
[1] http://www.oracle.com/technetwork/java/javase/compatibility-... [2] http://www.java.com/en/download/faq/remove_olderversions.xml