Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该继续编译旧版本的Java吗?_Java_Java 8 - Fatal编程技术网

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

我应该继续编译旧版本的Java吗?,java,java-8,Java,Java 8,自从Java8发布以来,我发现自己在刚刚开始的一个库项目上慢慢地依赖于Java8特有的特性(例如lambda语句) 我见过许多其他的项目,到今天为止,它们仍然是基于Java7,甚至Java6构建的,这让我不得不怀疑自己 立即开始使用最新版本的Java构建是一个好主意,还是应该继续使用旧版本? 请注意,与Java 6/7是最新版本时启动的其他项目不同,我的项目是最近在Java 8是最新版本时启动的。Java 8表示自Java 5(或其诞生)以来该语言的重大变化。如果您专门针对已更改的语言部分(我想

自从Java8发布以来,我发现自己在刚刚开始的一个库项目上慢慢地依赖于Java8特有的特性(例如lambda语句)

我见过许多其他的项目,到今天为止,它们仍然是基于Java7,甚至Java6构建的,这让我不得不怀疑自己

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


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

Java 8表示自Java 5(或其诞生)以来该语言的重大变化。如果您专门针对已更改的语言部分(我想您是这么说的),那么只有通过Java8+运行时才能使用它是有意义的


当Java 5出现在10年前,您希望在自己的库开发中使用当时引入的所有新功能(例如foreach语句、Enum等),您会怎么做?我相信您会使您的库至少需要Java5。如果你同意这一点,那么(合理的)逻辑同样适用于你目前的情况

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


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

我认为有两个原因需要使用Java 8之前的JVM:

  • 您正在编写一个库,该库正被您组织之外的一大群人使用,他们仍然停留在Java8之前的JVM上。如果您使用最新和最好的JVM,他们将无法再使用您的产品

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

  • 因为你提到这是一个新项目,所以#1不太可能。即使您计划拥有外部用户,如果它是一个新项目,需要最新版本的JVM也不是一个真正的问题


    随着越来越流行的第三方库发布了用于Java8的更新,第二也变得越来越不可能了。即使是少数掉队的人也可以在Java8上工作。例如,我在Java8中使用了hibernate的一个古老版本。我只是不在任何映射字段/实体中使用任何Java 8功能。

    谁是您库的使用者?你呢?其他项目?@Octopod:如果你使用Java8,那么那些被Java6或Java7束缚的人就不能使用它。是否支持这些用例取决于您。这真的是唯一的决定。我已经使用Java8两年了(甚至在正式发布之前),我没有看到任何问题。我用Java8发布了我的开源项目;这可能是个问题,因为了解Java8的程序员不多。但总得有人继续前进,对吗?我不能回到8天前:)在任何产品的产品管理中,这一点的现实是,总是有人在原始版本上运行,以及曾经发布过的所有其他版本。根据经验,您应该支持当前版本后面的版本,如果可能的话,支持之前的版本,并在出现新版本时向前滚动:但是技术因素可能会使这不可能,如果你能计算一下你的市场,你可能会发现这是没有必要的。使用Java8最大的实际效果就是它在哪里被使用。您可能有一个使用某些供应商技术的目标受众,他们坚持使用1.6或1.7,但这只是任何用户群的一小部分。坦白地说,如果8能让你的生活更轻松,那就用它吧!依赖于它的有用的东西越多,采用新版本的速度就越快。实际上,现在有一种工具可以(有一些限制)将Java 5应用程序向后移植到Java 1.4.2字节码。