背景
这并不像你想象中那样容易理解。
首先,尽管Oracle自2013年2月停止了对Java 6的公共支持, 但是Premier支持将一直持续到2013年12月,Extended支持将持续到2016年12月,因此会有一定的时间延迟。除此之外,还有可持续支持,可能会一直持续下去。
下一个主要的Java供应商IBM, 似乎甚至没有发布Java 6的支持终止日期(并且仍在支持Java 5直到2013年9月!)
第三,我们有苹果公司:最新的补丁发布于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版本。这意味着,在2014年4月之后,如果Java安装程序无法在Windows 7+上运行,那么我们可以有效地忽略Java版本在Windows XP上的支持。
我的真正兴趣是开发工具何时可以提高最低Java版本。
Jenkins 已经维护Java 5支持已经有一段时间了,但更改较新的变化意味着在主机和从属机上需要Java 6或更高版本才能运行1.520+。如果一些构建从属机,例如旧版硬件,无法运行更新的JVM,则可能会引发问题。
Maven 有长期让您将JVM分叉到J2SE 1.3以运行单元测试的历史记录,但自Surefire 2.15以来,它仅支持在Java 5或更低版本上运行单元测试。
javac正在采用1和三个后退策略,就
-source
和-target
而言...所以我们需要等到JDK 10之前,才能从javac中删除对Java 6源文件的支持...随着每两年发布一次版本,并计划于2014年初发布Java 8,这意味着JDK9将在2016年初推出,JDK10将在2018年初推出...但JDK9将公开维护另外3年,这意味着2019年是JDK 6源代码兼容性可以被放弃的时间。
问题
是否有一个明确的日期可以确定OSS开发者工具链可以停止支持Java 7之前的JVM,那个日期是什么?
OSS的区别很重要,因为OSS开发者通常没有资金购买扩展/高级/持续类型的支持合同,很可能也没有访问晦涩/主机硬件的权限。
更新: “停止支持Java 7之前的JVM”是指使用-target 7
完全编译整个工具链是安全的,即字节码需要Java 7来运行。
更新2: 正如所述,这应该是一个基于事实可回答的问题。正确的答案应该是以下两种形式之一:
没有明确的答案,在这里提供了一个链接,“一些向OSS用户提供免费Java 6更新的人们”,他们还没有说他们什么时候会停止。
或者
是的,有一个明确的YYYY-MM-DD日期,这是证据