使用不同的java更新版本|这对应用程序有何影响?

使用不同的java更新版本|这对应用程序有何影响?,java,Java,当代码使用一个Java版本编译时,如果它部署在不同的版本上,是否会出现任何奇怪的错误 在我们的开发(Windows)机器上,我们使用的是JDK.1.4.2_13,在QA(测试)和Prod[都是UX盒]中,我们使用的是JDK.1.4.2_9 我说的不是主要版本,而是次要版本/更新 我同意如果它在所有机器上都是一致的,那就好了。但是,如果次要版本或更新有任何不同,可以吗?您不应该在次要版本更改中遇到任何问题,字节码格式完全相同。小版本之间会有变化,但它们通常是bug和安全修复,不会影响应用程序 也就

当代码使用一个Java版本编译时,如果它部署在不同的版本上,是否会出现任何奇怪的错误

在我们的开发(Windows)机器上,我们使用的是
JDK.1.4.2_13
,在QA(测试)和Prod[都是UX盒]中,我们使用的是
JDK.1.4.2_9

我说的不是主要版本,而是次要版本/更新


我同意如果它在所有机器上都是一致的,那就好了。但是,如果次要版本或更新有任何不同,可以吗?

您不应该在次要版本更改中遇到任何问题,字节码格式完全相同。小版本之间会有变化,但它们通常是bug和安全修复,不会影响应用程序


也就是说,最好的选择是在相同的版本上运行QA和production,以确保没有会改变应用程序工作方式的功能更改。

次要版本之间的字节码和API没有差异。当然,这些版本并不相同,但几乎所有时候,它们的行为方式都是一样的。不过,也可能会出现一些差异,比如在较旧的JDK中出现的bug,在较新的JDK中修复的bug


在异构Win/Unix环境中,要小心使用正确的结构来编写一次,在任何地方运行。例如,使用java.io.File.separator而不是斜杠或反斜杠。

正如@Nathan所建议的,您的QA和生产环境实际上必须使用相同的JDK版本,并且通常尽可能相同。最好在开发环境中也有相同的配置

例如,假设您的生产环境位于JDK.1.4.2_9,但您的开发和QA使用的是较新的JDK.1.4.2_13。也可以说,您的新版本依赖于首先在JDK.1.4.2_13中进行的错误修复。在这种情况下,QA将通过,但生产将失败,这可能是灾难性的

但是您的QA也在JDK.1.4.2_9中。假设您的QA过程良好且彻底,它将捕获新版本对新JDK.1.4.2_13的依赖性,您可以修复它

如果你的QA有缺陷怎么办?在这种情况下,问题首先会在生产中表现出来。出于这个原因,最好将您的开发环境也保持在JDK.1.4.29上,以减少错误进入生产的可能性


您仍然可以在任何地方升级到JDK.1.4.2_13,只是不能在代码发布期间升级。独立执行此操作,首先在开发环境上进行升级和测试,然后在QA环境上进行升级和测试,然后将更改部署到生产环境中。

除不推荐的API外,新版本支持所有旧版本的字节码 但旧版本永远不支持新字节码

因此,最好根据客户要求或我们要求的方法 应使用alwayes最低(旧)版本