Java6源后向兼容性和SQL
-
12-09-2019 - |
题
我的理解是,为了保持来源的兼容性、Java从来没有引入了新的方法的公共接口,因为这打破了现有的客户实现接口。 Java释放笔记 国
在一般情况下,政策如下, 除了任何不兼容性 列出进一步下:
维护版本(例如1.4.1, 1.4.2)不会引入任何新的语言功能或Api。他们将会 维持源的兼容性 每个。
功能释放和重要 释放(例如1.3.0,1.4.0,5.0) 维持上但不下 源的兼容性。
然而,该软件包 java.sql
和 javax.sql
继续发展,并引入许多不相容的变化。例如,我注意到下列不符的改变(介绍了在Java6):
java.sql.Statement
延伸java.sql.Wrapper
, 需要新的两个新方法。java.sql.Statement
引入3个新的方法java.sql.PreparedStatement
介绍了19个新的方法!java.sql.ResultSet
介绍了48新的方法!
你知不知道如何和为什么这些方法得到了加?是 java.sql
正在处理的不同的其余部分的平台?你知道的讨论/JSR围绕这些增加?
解决方案
我得到了以下答复从一开发的太阳
一般演变的政策Api JAVA为特征稿像JAVA7
- 不断的二进制的兼容性(定义在JLSv3第13章)
- 避免引入来源的不兼容性
- 管理行为的兼容性更改
(欲了解更多,远远超过你的想读于各种不同的兼容性看看
"种类的相容性:源、二和行为" 和 "兼容不断变化的BigDecimal"
加法到接口是二进制的 兼容 但 来源 不相容的,所以它不是通常做。一般来说,更广泛地实施了一个界面,不太可能,我们添加的方法。JDBC区域是一个例外的政策和采用更宽松的升级规则,但这并导致真正的问题当人们想要升级到一个新的JAVA释放。
其他提示
请注意,添加新的方法只是打来源的兼容性,已经编制实现的 Statement
或 ResultSet
在JDBC驱动程序将继续运行一个较新的JAVA.只有当你尝试打电话的新方法,你会得到一个 NoSuchMethodError
.
他们可能假设数据库驱动的供应商实现这些方法是保持最新的新Java运行时,它最好采用新的方法和暂时休息的兼容性。
当然,他们可以设计得更好,以便打破的兼容性,就不会有必要...
太阳从来没有保证的来源之间的兼容性释放,只有二进制的兼容性。最常见的例子是,源代码包含'断言"或"enum标识符,将不编制下JAVA1.4(对于维护)或1.5+(为enum),但现有的。类文件仍然下运行这些新的Jvm。
你可以尝试使用的来源的标志汇编老年人。java下的文件更新Jvm但是你仍然可能遇到的问题,如果你依靠jvm类已经改变。