Java 6 的生命周期何时结束?(在编写开发人员工具的上下文中)[已关闭]背景问题

2022-09-02 22:16:31

背景

这并不像你想象的那么明显。

首先,虽然Oracle已经从2013年2月停止了对Java 6的公开支持,但随着Premier支持到2013年12月,扩展支持到2016年12月,所以有点长尾。最重要的是,有持续的支持,可以永远持续下去。

下一个主要的Java供应商IBM似乎甚至没有发布对Java 6的支持终止的声明(直到2013年9月仍然支持Java 5!

第三,我们有苹果:目前最新的补丁是在2013年6月,由于“该公司没有以黑白方式阐明其支持政策”,这似乎是任何人的猜测......但是如果他们处理Java 5可以作为基础,我们可能会看到另外18个月左右......2014年底-ish?

最后我们有OpenJDK...红帽表示他们现在将支持...

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

因此,据我所知,到目前为止,只要您有钱支付Oracle / IBM / Red Hat,您就可以继续获得无限期支持的Java 6版本...

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

  • 如果您无法再购买特定JVM上运行的硬件/操作系统,那么继续支持该特定JVM是一个有争议的问题。扩展支持合同适用于现有客户,这些客户很可能通过现有系统满足其现有需求...如果他们不能更改为较新的

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

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

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

    Jenkins 一段时间以来一直支持 Java 5,但较新的更改意味着 1.520+ 需要 Java 6 或更高版本的主站和从站。如果某些构建从站(例如旧硬件)无法运行较新的JVM,这可能会导致问题。

    Maven 在让你将 JVM 分叉到 J2SE 1.3 以运行单元测试方面有着悠久的历史,但从 Surefire 2.15 开始,它只支持在 Java 5 低级上运行单元测试。

    javac正在转向1和3背政策,在和...因此,我们需要等到 JDK 10 才能从 javac 中删除 Java 6 源文件支持...随着2年的发布节奏和Java 8计划在2014年初发布,这意味着JDK9在2016年初和JDK10在2018年初...但是JDK9将公开维护3年,这意味着2019年的某个时候,JDK 6源代码兼容性可能会下降。-source-target

问题

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

OSS的区别很重要,因为OSS开发人员通常没有资金购买扩展/高级/持续类型的支持合同,并且很可能无法访问晦涩难懂/大型机硬件。

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

更新 2:正如所框定的那样,这应该是一个基于事实的可回答问题。正确答案应为以下任一形式

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

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


答案 1

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

哈哈没有这样的日期。

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

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

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

  • 社区支持/发展的程度可能早已超过商业上可行的程度。

  • 如果没有,您可以访问源代码,因此您可以(理论上)支持自己,或者付钱给其他人为您做这件事。


Steve Conolly评论道:

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

这是完全错误的。

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

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

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

这也是错误的。

Sun(以前)和现在的Oracle提供免费下载Java免费版本的EOL版本...一直追溯到Java 1.1。EOL-ing 不会改变可用性。它实际上是关于最近发现的安全问题和其他错误的旧版Java的补丁版本的可用性。你必须为此付出代价。(很公平。Oracle 需要花钱才能完成这项工作。

问题在于Java 5和更早的版本过去和现在都不是源代码形式免费提供的。这意味着客户实际上没有选择修复(比如)Java 5中的安全漏洞。相比之下,在Java 6中,他们确实有这个选项。OpenJDK 6代码库已经作为开源发布,无法撤销。此外,由于Java 7和Java 8也是开源的,人们可以跟踪Java 7和8中的安全修复,并尝试将更改移植回OpenJDK 6代码库...


答案 2

推荐