当使用一个Java版本编译代码并且它是否部署在不同版本上时,是否会出现任何奇怪的错误?
在我们的开发(Windows)计算机上,我们使用JDK.1.4.2_13
并在QA(测试)和Prod [两者都是UX框]中使用JDK.1.4.2_9
。
我不是在谈论主要版本,而是次要版本/更新!
我同意它很好,如果它在整个机器上是一致的。但是,如果未成年人或更新有任何不同,这是否可以?
答案 0 :(得分:4)
正如@Nathan建议的那样,您的QA和生产环境必须使用相同的JDK版本,并且通常尽可能相同。最好在开发环境中使用相同的配置。
例如,假设您的生产环境位于JDK.1.4.2_9,但您的开发和QA使用的是较新的JDK.1.4.2_13。我们还要说你的新版本取决于JDK.1.4.2_13中首次提出的错误修正。在这种情况下,质量保证将通过,但生产将失败,可能是灾难性的。
但你的质量保证也在JDK.1.4.2_9。假设您的QA流程良好且彻底,它将捕获新版本对新JDK.1.4.2_13的依赖性,您可以修复它。
如果你的质量保证有缺陷怎么办?在这种情况下,问题首先会出现在生产中。出于这个原因,最好将开发环境保留在JDK.1.4.2_9上,以使错误不太可能使其投入生产。
您仍然可以在任何地方升级到JDK.1.4.2_13,而不是在代码发布期间。首先通过升级和测试开发环境,然后在QA环境中,然后将更改部署到生产环境中,独立完成此任务。
答案 1 :(得分:1)
对于次要版本更改,您不应遇到任何问题,字节码格式完全相同。次要版本之间存在更改,但它们通常是错误和安全修复程序,不会影响您的应用程序。
话虽如此,最好的选择是在相同版本上运行QA和生产,以确保没有功能更改会改变您的应用程序的工作方式。
答案 2 :(得分:1)
答案 3 :(得分:0)
次要版本之间的字节码和API没有区别。当然,这个版本并不相同,但几乎所有时间,它们的行为都是一样的。但是可能会出现一些差异,例如出现较旧的JDK并在较新的JDK中修复的错误。
小心在异构的Win / Unix环境中使用正确的构造来编写一次,在任何地方运行。例如,使用java.io.File.separator而不是斜杠或反斜杠。
答案 4 :(得分:0)
除了deprected apiS之外,新版本支持所有旧版本的字节代码 但旧版本从不支持新字节代码。
所以根据客户要求或我们要求的方法更好 应该使用alwayes最小(较旧)版本