In general,the policy is as follows,
except for any incompatibilities
listed further below:
Maintenance releases (such as 1.4.1,
1.4.2) do not introduce any new language features or APIs. They will
maintain source-compatibility with
each other.Functionality releases and major
releases (such as 1.3.0,1.4.0,5.0)
maintain upwards but not downwards
source-compatibility.
然而,java.sql和javax.sql包继续发展并引入了许多不兼容的更改.例如,我注意到以下不兼容的更改(在Java 6中引入):
> java.sql.Statement
扩展java.sql.Wrapper,需要新的两种新方法.
> java.sql.Statement
引进3种新方法
> java.sql.PreparedStatement
引进了19种新方法!
> java.sql.ResultSet
引进了48种新方法!
解决方法
JDK中针对API的API的一般演进策略是JDK 7等功能版本
>不要破坏二进制兼容性(如JLSv3第13章所定义)
避免引入源不兼容
>管理行为兼容性变化
(对于更多,比您想要阅读的不同类型的兼容性更多见
“Kinds of Compatibility: Source,Binary,and Behavioral”
和
“Compatibly Evolving BigDecimal”
向接口添加方法是二进制兼容的,但源不兼容,因此它不是通常的.通常,界面越广泛实现,我们越不可能添加方法. JDBC区域是此策略的一个例外,并且使用更宽松的升级规则,但是当用户想要升级到新的JDK版本时,会导致真正的问题.