用Java 8在5天内编译一个用Java编写的旧程序

用Java 8在5天内编译一个用Java编写的旧程序,java,java-8,java-7,java-6,java-5,Java,Java 8,Java 7,Java 6,Java 5,本主题也有类似的帖子,但大多数帖子都讨论了这样一个事实,即您可以运行一个程序,该程序是使用比运行该程序的JRE版本更高的Java版本编译的。因此,使用Java 7编译的程序将使用JRE Java版本8运行 然而,我的问题是。假设几年前有人编写了一个程序,当时最新的Java版本是Java5。因此,他们使用Java5特性编写程序,并使用Java5编译代码 几年后,我来到这里,我想获取他们的确切代码(不做任何更改)并重新编译它。我可以使用Java8吗?还是使用Java5编译代码更安全 简而言之,使用最

本主题也有类似的帖子,但大多数帖子都讨论了这样一个事实,即您可以运行一个程序,该程序是使用比运行该程序的JRE版本更高的Java版本编译的。因此,使用Java 7编译的程序将使用JRE Java版本8运行

然而,我的问题是。假设几年前有人编写了一个程序,当时最新的Java版本是Java5。因此,他们使用Java5特性编写程序,并使用Java5编译代码

几年后,我来到这里,我想获取他们的确切代码(不做任何更改)并重新编译它。我可以使用Java8吗?还是使用Java5编译代码更安全


简而言之,使用最新的Java版本编译旧代码是否存在安全问题?

Java 8是向后兼容的,因此您应该不会有问题。但是,您使用的某些函数可能已弃用,在这种情况下,您可能会收到警告,但仍然能够编译和运行代码


您可以在这里了解更多信息:

Java8是向后兼容的,所以您应该很好。但是,您使用的某些函数可能已弃用,在这种情况下,您可能会收到警告,但仍然能够编译和运行代码


您可以在这里了解更多信息:

以什么方式更安全?没有什么可以阻止您使用java 8编译程序,如果您打算在java 8运行时运行它,您当然应该这样做。编译过程基本相同,因此不会有任何问题。现在运行时已经改变,如果应用程序以不应该的方式使用某些类,可能会产生一些影响(例如,我在一个类中看到了一个错误,因为在Java 8上存储集合的方法不同……但该应用程序没有使用哈希集)。Java 6中引入了枚举。我记得必须将所有枚举变量更改为枚举才能获得要编译的代码。@GilbertLeBlanc枚举是在Java5中引入的。请注意中的
@since
标记。如果您希望确保所有的编译和运行都完全相同,那么使用Java 5会更安全。如果您关心安全问题和可维护性,那么使用Java8会更安全。事实上,我认为现在维护Java5应用程序是不现实的。但是,如果您有一个后续的代码库,那么请准备好几天迁移到Java8。以什么方式更安全?没有什么可以阻止您使用java 8编译程序,如果您打算在java 8运行时运行它,您当然应该这样做。编译过程基本相同,因此不会有任何问题。现在运行时已经改变,如果应用程序以不应该的方式使用某些类,可能会产生一些影响(例如,我在一个类中看到了一个错误,因为在Java 8上存储集合的方法不同……但该应用程序没有使用哈希集)。Java 6中引入了枚举。我记得必须将所有枚举变量更改为枚举才能获得要编译的代码。@GilbertLeBlanc枚举是在Java5中引入的。请注意中的
@since
标记。如果您希望确保所有的编译和运行都完全相同,那么使用Java 5会更安全。如果您关心安全问题和可维护性,那么使用Java8会更安全。事实上,我认为现在维护Java5应用程序是不现实的。但是,如果您有一个后续的代码库,请准备好几天迁移到Java 8。类型推断中也存在一些差异,可能会导致代码停止编译。@Mr.Tea不是真的。什么失败了,什么起作用了,没有好的一般规则;类型推断或多或少是一个魔盒,通常有效,有时无效。有一些例子。类型推断中也存在一些差异,可能导致代码停止编译。@Mr.Tea并非如此。什么失败了,什么起作用了,没有好的一般规则;类型推断或多或少是一个魔盒,通常有效,有时无效。有一些例子。