There was a really neat study that came my way via Jens Dietrich of the Massey University in New Zealand.
Its a series of Java Puzzler style questions written to help understand the differences between source and binary compatibility. For example swapping out jars of different versions in a runtime environment or recompiling source against new jars where the method interfaces have changed.
Its a pretty good survey as it makes you question a few things about how the classloader or Javac works that you may not have had to encounter prior. Its also questions that the core libraries team face when upgrading the JDK as evidenced by recent discussions on the lambda dev mailing list.
The link to the survey is here.
Be warned its quite long (1hr) but there is a shorter one thats linked off that page if you are pushed for time. After your finished you get a full presentation explaining the difference plus links to the code.
Highly recommend you give it a shot.
I have created a survey for Java developers to find out whether they are aware of the (sometimes subtle) differences between source and binary compatibility between client programs and the libraries these programs use. The style of this survey is inspired by the book Java Puzzlers by Joshua Bloch and Neal Gafter.
I would appreciate if you could complete this survey, and send it to other developers you know. At the end of the survey you will find a link to a repository with a presentation containing the solutions, and the source code for the examples used.