首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 6源代码向后兼容性和SQL

Java 6源代码向后兼容性和SQL
EN

Stack Overflow用户
提问于 2009-08-11 16:27:38
回答 3查看 2K关注 0票数 9

我的理解是,为了维护源代码兼容性,Java从不向公共接口引入新方法,因为这会破坏实现接口的现有客户端。Java发行说明

一般而言,该政策如下,但下文进一步列出的任何不相容之处除外:

  • 维护版本(如1.4.1、1.4.2)没有引入任何新的语言特性或API。他们将保持源代码的兼容性。
  • 功能版本和主要版本(如1.3.0、1.4.0、5.0)保持向上但不是向下的源代码兼容性。

然而,包java.sqljavax.sql继续发展,并引入了许多不兼容的更改。例如,我注意到以下不兼容的更改(在Java 6中引入):

  • java.sql.Statement扩展了java.sql.Wrapper,需要新的两个新方法。
  • java.sql.Statement引入了3种新方法
  • java.sql.PreparedStatement引入了19种新方法!
  • java.sql.ResultSet介绍了48个新方法!

你知道这些方法是怎么增加的吗?java.sql是否与平台的其他部分不同?你知道关于这些补充的讨论/JSR吗?

EN

回答 3

Stack Overflow用户

发布于 2009-08-11 16:37:51

请注意,添加新方法只会破坏源代码兼容性,在JDBC驱动程序中已经编译好的StatementResultSet实现将继续在较新的JDK上运行。只有当您尝试调用一个新方法时,才会得到一个NoSuchMethodError

票数 4
EN

Stack Overflow用户

发布于 2009-08-11 16:31:26

他们可能认为,实现这些方法的数据库驱动程序供应商正在与新的Java运行时保持同步,最好引入有用的新方法并暂时破坏兼容性。

当然,他们可以把它设计得更好,这样…就不需要破坏兼容性了。

票数 1
EN

Stack Overflow用户

发布于 2009-08-11 16:59:43

Sun从不保证版本之间的源代码兼容性,只保证二进制兼容性。最常见的例子是,包含“断言”或“enum”标识符的源代码不会在JDK1.4(用于断言)或1.5+ (用于枚举)下编译,但现有的.class文件仍将在这些较新的JVM下运行。

您可以尝试使用-source标志在较新的jvm下编译较旧的.java文件,但如果依赖已更改的jvm类,则仍然会遇到问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1261497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档