Ron Wheeler wrote:
So always compile with 1.5 and make a package for 1.5 and copy it to files with 1.6 and 1.7 names. If the managers don't know how Java JVM works they will be impressed by how fast you can deliver new packages in so many operating systems and really impressed at the speed with which you can bring out 1.8 support.
Well yes generally - however this week I had code that when compiled ON JDK7 but targetting JDK6 worked fine, but targetting JDK7 failed to even compile.

This was the in part my discovery of this new javac error message:

[ERROR] .../TransactionFilter.java:[112,11] exception javax.validation.ConstraintViolationException has already been caught

turns out, javac now enforces/tracks the loss of visibility in catch blocks, in this case, above the ConstraintViolationException catch block was one for ValidationException , this is ConstraintViolationExceptions super class.

However, I was pointing out the just "compiling to JDK5" doesn't really help much, but you are correct and I got my terms backwards - I refer to this quote that I posted on my own darn blog ;p

http://www.theoryinpractice.net/post/18036749530/java-has-never-been-future-compatible-and-will

Java has never been future compatible, and will never be. I just want to make sure that is clear, because if you've been under the impression that it was 100% future compatible or that there was an implied contract I can assure you that is not the case. There are numerous times in each release where fixing a bug will break somebody. It is just the nature, or physics, of the situation.
-- Richard Bair on bundling a JRE per-application for desktop applications.

If you want to be JDK5 compatible, compile for, and WITH JDK5.

Reply via email to