什么时候Java 6生命终结? (在编写开发人员工具的上下文中)

背景

这并不像你想象的那样立即明白。

首先, 截至2013年2月 , 甲骨文已经停止了对Java 6的公众支持,但是2013年12月的Premier支持和2016年12月的扩展支持还有一个长尾。 最重要的是,持续支持可以永远持续下去。

下一个主要的Java供应商IBM 似乎甚至没有发布对Java 6的支持 (并且在2013年9月之前仍然支持Java 5!)

第三,我们有Apple:2013年6月目前最新的补丁和“该公司没有详细说明其黑白支持政策”似乎是任何人的猜测…但如果他们处理Java 5可以是作为基础我们可能会看到另外18个月左右… 2014年底 – 是吗?

最后我们有OpenJDK …… Red Hat已经表示他们现在将支持 ……

我甚至没有开始考虑其他JVM实现只是在野外看到的更常见的!

所以从我所看到的,到目前为止,只要你有钱支付Oracle / IBM / Red Hat,你就可以继续获得无限期支持的Java 6版本……

也许我们可以开始更好地构建这个问题,并获得一个非无限期答案的机会:

  • 如果你不能再购买特定JVM运行的硬件/操作系统,那么继续支持那个特定的JVM有点没什么意义。 扩展的支持合同适用于现有客户,他们现有的系统很可能满足他们现有的需求……如果他们不能更换为更新的

    这实际上为我们提供了一些关于Apple的背景……由于Apple硬件支持5年(​​如果在加利福尼亚州为7),那么唯一受支持的Apple硬件应该是基于x86的硬件,因为交换机已于2006年12月完成(是最后一个基于PPC的硬件) 苹果硬件出货) ,所以实际上我们不必担心在PPC上运行的Apple Java版本

    同样,我们可以排除在旧版Windows上运行的任何Java版本。 这意味着,如果Java安装程序无法在Windows 7+上运行,那么到2014年4月那么我们是否可以有效地忽略Windows XP支持的Java版本?

  • 我真正感兴趣的是开发人员工具何时可以推进其最低Java版本。

    一段时间以来, Jenkins一直保持对Java 5的支持,但更新的更新意味着1.520+需要Java 6或更高版本的主服务器和从服务器。 如果某些构建从属(例如传统硬件)无法运行较新的JVM,则会导致问题。

    Maven已经有很长的历史让你将JVM分解为J2SE 1.3以运行unit testing,但是从Surefire 2.15开始 ,它只支持运行unit testing,与Java 5一样低。

    -source-target方面, javac正在转向一个和三个后退策略…所以我们需要等到JDK 10才能从javac中删除Java 6源文件支持…以2年的发布节奏和Java 8计划于2014年初发布,这将暗示2016年初的JDK9和2018年初的JDK10 ……但JDK9将在公开维护3年后可用,这意味着2019年的某个时候JDK 6源代码兼容性可能被丢弃。

是否有明确的日期可用于确定何时OSS开发人员工具链可以放弃对Java 7之前的JVM的支持,那个日期是什么?

OSS的区别非常重要,因为OSS开发人员通常没有资金来购买扩展/优质/维持型支持合同,而且很可能无法访问模糊/大型机硬件。

更新:通过“支持Java 7之前的JVM”,我的意思是使用-target 7编译整个工具链是安全的,即字节码需要运行Java 7。

更新2:这应该是一个基于事实的可回答的问题。 正确的答案应该是表格

没有明确的答案,这里有一个链接“一些人为Java 6上的OSS人员提供免费更新”,他们还没有说他们何时会停止。

要么

是的,有一个YYYY-MM-DD的确定日期,这是证据

是否有明确的日期可用于确定何时OSS开发人员工具链可以放弃对Java 7之前的JVM的支持,那个日期是什么?

不,没有这样的日期。

开发工具链的人可以随意放弃对EOL’d版Java的支持……或者根本不放弃。 假设,如果个人(或公司)与其他公司(例如客户)签订了合同安排以在特定时期内提供支持,那么这些协议显然会限制它们。 但是,这不太可能会限制整个项目。

(但是,实际情况是维持对旧版Java的支持变得越来越难以维持。开发人员希望/需要能够在工具链代码库中使用新的Javafunction。所以你可能会看到你可以的情况使用工具链为遗留Java开发代码,但您必须在现代Java上运行工具链。)

对于Java代码库的OSS版本,您(Java的用户)处于更好的位置:

  • 社会支持/发展的某种程度可能早在商业上可行的时候就已经存在。

  • 如果没有,您可以访问源代码,这样您(理论上)可以支持自己,或者付钱给别人为您完成。


Steve Conolly评论道:

OSS社区无法签订支持合同。

那是完全错误的。

OSS社区中的任何人都可以与您签订合同,为OSS产品提供支持。 这实际上是一些开发人员赚取的钱,使他们能够继续开发他们的东西。

此外,所有主流OSS许可证都允许这样做……包括GPL及其所有变体。

但是,如果OSS社区不可能增加开发人员,因为在不产生成本的情况下根本无法访问该技术,那么这就迫使java-7之前的支持变得不可能。

那也是错的。

Sun(之前)和现在的Oracle提供免费下载的EOL’d版本的Java免费版本……一直回到Java 1.1。 EOL-ing不会改变可用性。 它实际上是关于最近发现的安全问题和其他错误的旧版Java补丁版本的可用性。 你必须付钱。 (很公平。这需要Oracle资金来完成这项工作。)

问题是Java 5及更早版本是以源代码forms免费提供的。 这意味着客户实际上没有选择在Java 5中修复(比如说)安全漏洞。相比之下,在Java 6中他们确实有这个选择 。 OpenJDK 6代码库已作为开源发布, 无法取消。 此外,由于Java 7和Java 8也是开源的,人们可以跟踪Java 7和8中的安全修复程序,并尝试将更改反向移植到OpenJDK 6代码库…