我有一些在Java 6上运行的大项目。但我计划在Java 8中开始构建它们,因为许多构建工具已经从Java 6中移除。
使用Java 8简单地编译它们然后将它们部署在运行Java 8的Web容器中是否安全?如果没有,有什么考虑因素?
仅供参考,他们没有适当的自动化测试套件。
答案 0 :(得分:2)
通常应该是,因为大多数功能都是向后兼容的。但是,没有保证。在开始生产之前,请按照正确的流程进行测试。
对于web容器,使用jdk,版本也会发生变化。这可能会导致一些问题,具体取决于软件供应商以及您从容器中使用的所有服务(JNDI,连接池等)。我曾经在将应用程序迁移到更高版本的JDK时出现问题。我们还升级了Websphere。我们使用的是JSF,更高版本的WAS包含了JSF jar,这与我们的应用程序罐发生冲突。
您的应用可能正在使用许多可能受影响的第三方库。同样,大多数情况下你应该没问题,但可能存在小问题。在不知道您的应用程序的情况下,我只建议迁移和测试以确认。
答案 1 :(得分:2)
问题可能与:
有关平台行为的某些方面是故意未指定的,底层实现可能会在平台版本中发生变化。
所以是的,从java 6到java 8的过程可能会破坏你的代码。
但如果编译代码,则确定代码的行为是相同的,因为通常(但并非总是)授予了复古兼容性。您可以确定只在java 6和Java 8版本上运行完整的单元测试集。
这里有一些java 6和java 7之间不兼容的例子:
JDK-6527962:退出非标准软件包com.sun.image.codec.jpeg。如果您的代码使用此软件包,则无法在java 8上编译
JDK-6563734: Path2D.Float和Path2D.Double应该有最终的getPathIterator方法如果你的代码ovewrite声明final的方法,代码将无法编译传递给java 8
的完整正式列表 的完整正式列表答案 2 :(得分:0)