我的理解是,为了保持来源的兼容性、Java从来没有引入了新的方法的公共接口,因为这打破了现有的客户实现接口。 Java释放笔记

在一般情况下,政策如下, 除了任何不兼容性 列出进一步下:

  • 维护版本(例如1.4.1, 1.4.2)不会引入任何新的语言功能或Api。他们将会 维持源的兼容性 每个。

  • 功能释放和重要 释放(例如1.3.0,1.4.0,5.0) 维持上但不下 源的兼容性。

然而,该软件包 java.sqljavax.sql 继续发展,并引入许多不相容的变化。例如,我注意到下列不符的改变(介绍了在Java6):

你知不知道如何和为什么这些方法得到了加?是 java.sql 正在处理的不同的其余部分的平台?你知道的讨论/JSR围绕这些增加?

有帮助吗?

解决方案

我得到了以下答复从一开发的太阳

一般演变的政策Api JAVA为特征稿像JAVA7

  1. 不断的二进制的兼容性(定义在JLSv3第13章)
  2. 避免引入来源的不兼容性
  3. 管理行为的兼容性更改

(欲了解更多,远远超过你的想读于各种不同的兼容性看看

"种类的相容性:源、二和行为""兼容不断变化的BigDecimal"

加法到接口是二进制的 兼容来源 不相容的,所以它不是通常做。一般来说,更广泛地实施了一个界面,不太可能,我们添加的方法。JDBC区域是一个例外的政策和采用更宽松的升级规则,但这并导致真正的问题当人们想要升级到一个新的JAVA释放。

其他提示

请注意,添加新的方法只是打来源的兼容性,已经编制实现的 StatementResultSet 在JDBC驱动程序将继续运行一个较新的JAVA.只有当你尝试打电话的新方法,你会得到一个 NoSuchMethodError.

他们可能假设数据库驱动的供应商实现这些方法是保持最新的新Java运行时,它最好采用新的方法和暂时休息的兼容性。

当然,他们可以设计得更好,以便打破的兼容性,就不会有必要...

太阳从来没有保证的来源之间的兼容性释放,只有二进制的兼容性。最常见的例子是,源代码包含'断言"或"enum标识符,将不编制下JAVA1.4(对于维护)或1.5+(为enum),但现有的。类文件仍然下运行这些新的Jvm。

你可以尝试使用的来源的标志汇编老年人。java下的文件更新Jvm但是你仍然可能遇到的问题,如果你依靠jvm类已经改变。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top