我应该继续编译旧版Java吗?

时间:2015-05-13 21:30:37

标签: java java-8

自从Java 8发布以来,我发现自己在 启动的库项目中慢慢变得依赖于Java 8特有的功能(例如lambda语句)。

我见过很多其他的项目,直到今天仍然是针对Java 7,甚至是Java 6构建的,这让我自己猜测。

立即开始构建最新版本的Java是一个好主意,还是应该使用旧版本?

请注意,与Java 6/7是最新版本时已经开始的其他项目不同,我最近在Java 8是最新版本时启动了。

3 个答案:

答案 0 :(得分:3)

我可以想到有两个原因需要保留Java 8之前的JVM:

  1. 您正在编写一个库,该库正被组织外的大量人员使用,这些人仍然停留在Java 8之前的JVM上。如果您使用最新最好的JVM,他们将无法再使用您的产品。

  2. 您依赖于尚未升级到Java 8并在Java 8上中断的第三方库。

  3. 既然你提到这是一个新项目,那么#1不太可能。即使您计划拥有外部用户,如果它是一个新项目,那么要求最新版本的JVM并不是一个真正的问题。

    随着更受欢迎的第三方库发布了适用于Java 8的更新,第2号也变得越来越不可能。即使是少数散乱者通常也可以使用Java 8.例如,我使用古老版本的hibernate Java 8.我只是不在任何映射的字段/实体中使用任何Java 8功能。

答案 1 :(得分:1)

Java 8表示自Java 5(或可能是它的开始)以来对语言的重大改变。如果您专门针对已更改的语言部分(我猜您声称),那么只有Java 8+运行时才能使用它是有意义的。

当Java 5在10年前发生并且您希望将当时引入的所有新功能(例如foreach语句,Enums等)用于您自己的库开发时,您会做什么?我相信你会让你的库至少需要Java 5。如果您同意这一点,那么(声音)逻辑也会始终如一地适用于您目前的情况。

答案 2 :(得分:1)

对于服务器端应用程序,可能是EJP建议的当前版本之前的一个或两个版本。

然而,在客户端方面,我认为尝试支持较旧的Java版本没有任何意义。自至少Java 6以来,JRE一直在自动更新。它已经达到Java Web Start启动的应用程序无法指定早于当前JRE的程度。或者更确切地说,它可以指定它在启动文件中选择的任何JRE,但是这将被忽略,以支持用户计算机上安装的最新版本。