Use-cases for version ranges?

Alex Buckley alex.buckley at oracle.com
Mon Nov 21 14:00:18 PST 2011


Obviously, comments about lambda expressions and their impact on API 
evolution should be sent to lambda-dev @ OpenJDK.

On 11/21/2011 1:11 PM, cowwoc wrote:
>       To answer your original question, being able to evolve interfaces
> without breaking backwards compatibility helps but it doesn't really
> change my view of semantic compatibility. I remember plenty of Swing
> bugs I reported which were closed as WON'T FIX because doing so would
> have broken backwards compatibility for existing users. I'm talking
> about cases where someone made a mistake in the design and it could not
> be fixed for the rest of time. At the end of the day there needs to be a
> way for us to make changes that break compatibility in a reasonable
> manner. Had Sun/Oracle taken this route, they could have slowly replaced
> deprecated classes and methods over time. Even Microsoft dropped Windows
> 95 after 10 years.

In other words, you consider the "irreducible complexity" of semantic 
compatibility to lie in _behavioral_ compatibility (as opposed to binary 
and source compatibility). That's completely fair. And the mechanisms 
needed to control behavioral compatibility include, in your view, 1) the 
provider being able to express inter-version compatibility, and 2) the 
consumer being able to override required versions as a last resort 
(possibly via the trick of metadata living outside a module). Also 
completely fair.

Alex



More information about the jigsaw-dev mailing list