'. '

BackwardCompatibility

From APIDesign

(Difference between revisions)
Jump to: navigation, search
(Functional Compatibility)
(Source Compatibility)
Line 3: Line 3:
== Source Compatibility ==
== Source Compatibility ==
-
TBD.
+
Two versions of the same library are ''source compatible'' if any program written and successfully compiled against the older version can also be successfully compiled against the new version.
 +
 
 +
Obviously this means that one cannot remove or rename accessible objects in the [[API]] of the library. What has once been discovered needs to continue to [[Blogs:JaroslavTulach:Theory:DiamondsVsStars|shine on]] and follow the rules of proper [[API Design]] until eternity.
 +
 
 +
However this kind of compatibility is not easy to reach in [[Java]], as also almost any addition can cause problems. Especially due to language constructs like wildcard import.
== Binary Compatibility ==
== Binary Compatibility ==

Revision as of 15:09, 21 December 2008

BackwardCompatibility is the tool that helps us, software engineers, practice the style of DistributedDevelopment. In the situation when we build our applications from hundreds and hundreds of external libraries, when we cannot control their schedule, yet we need new upgrades of such downstream libraries. BackwardCompatibility is the mantra that allows us reach smooth Upgradability of such components in our systems.

Source Compatibility

Two versions of the same library are source compatible if any program written and successfully compiled against the older version can also be successfully compiled against the new version.

Obviously this means that one cannot remove or rename accessible objects in the API of the library. What has once been discovered needs to continue to shine on and follow the rules of proper API Design until eternity.

However this kind of compatibility is not easy to reach in Java, as also almost any addition can cause problems. Especially due to language constructs like wildcard import.

Binary Compatibility

TBD.

Functional Compatibility

TBD.

See also the API Fest game.

Personal tools