Java 同一个jar的不同版本是否保证了相同的功能?

Java 同一个jar的不同版本是否保证了相同的功能?,java,maven,jakarta-ee,dependency-management,Java,Maven,Jakarta Ee,Dependency Management,我正在用maven重新构建一个旧的JavaEE应用程序。它有非常旧的依赖项,这些依赖项有较新的版本。如果我包含项目确实编译的较新的DEP,但是,我在功能方面会有问题吗 例如,在javax.ejb中,项目有这个dep,我发现它最后一次被修改是在2001年。如果我包括这个我知道已经更新的dep,我会有同样的功能吗?。换句话说:尽管应用程序使用较新的依赖项版本编译,但应用程序的行为是否会改变 编辑: 这只是一个例子,该项目有更多deps:org.apache.axis 谢谢不,您不能确定功能是否相同。

我正在用maven重新构建一个旧的JavaEE应用程序。它有非常旧的依赖项,这些依赖项有较新的版本。如果我包含项目确实编译的较新的DEP,但是,我在功能方面会有问题吗

例如,在javax.ejb中,项目有这个dep,我发现它最后一次被修改是在2001年。如果我包括这个我知道已经更新的dep,我会有同样的功能吗?。换句话说:尽管应用程序使用较新的依赖项版本编译,但应用程序的行为是否会改变

编辑: 这只是一个例子,该项目有更多deps:org.apache.axis


谢谢

不,您不能确定功能是否相同。接口和类的名称可能相同,但在运行时您不知道会发生什么。库试图保持向后兼容,但您必须阅读过去每个版本的发行说明才能确定。即使如此,一些小事情可能还没有包括在注释中。您最好的办法是追踪原始依赖项


也就是说,如果它成功构建,您还可以尝试运行它

EJB规范和EJB API的所有版本都是向后兼容的。几乎所有来自Oracle/Sun的规范和公共API都是向后兼容的;这一直是一个设计目标。您是在询问EJB规范的不同版本,还是第三方软件包的不同版本?这个问题与第三方软件包的不同版本有关。据我所知,Java库中的一个关键设计原则是,它应该是向后兼容的,但我不知道它是否适用于不同的ejb实现/verisonsAlthough,为了解决上面评论中提到的@VGR这一点,一些提供程序在向后兼容方面更稳定。这确实是你必须逐案解决的问题。