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