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