Java 1.8与Java 1.7兼容性问题

7

我正在使用Java 1.7来编写代码,现在想要将JAVA 1.7更换为JAVA 1.8。那么Java 1.8Java 1.7兼容吗? 它是否能像以前一样工作,我的意思是,所有Java 1.8的新功能能够在现有的代码中使用吗?


4
Java 8还没有正式发布,所以可以说还没有人能够100%确定。 - David
Java8将删除不推荐使用的方法,因此如果您的项目中使用了任何不推荐使用的方法,则您的项目将无法在Java8中运行。 - SpringLearner
2
@JqueryLearner 真的吗?你有相关来源吗? - Kayaman
1
@Kayaman Thread#stop 将被移除——并非其声明,而是其实现。我不知道其他的例子。 - Marko Topolnik
2
@StephenC 只有 Thread#stop(Throwable) 重载已被删除。参考:http://cs.oswego.edu/pipermail/concurrency-interest/2013-July/011514.html - Marko Topolnik
显示剩余5条评论
2个回答

10

现有的代码将不使用Java 8的任何新功能(ipso facto)。如果您有一段在Java版本v上运行的代码,则它也将在所有其他版本v' > v上运行。这是Java平台长期以来的承诺。


1 “运行”指“按规定使用非弃用的官方JDK API 运行”。


只要您的代码仅依赖于公共API和Java平台规范,例如使用Unsafe或依赖于实现细节(如字符串内部化)不在此承诺的范围内。 - Pyranja
并不是所有的软件都是如此。一个显著的例子是GATK,这是由Broad Institute开发的基因组分析工具包。它只兼容Java 1.7,并且如果Java版本是1.8,它将会抛出异常。 - carbocation
1
@carbocation 可能的原因是它使用了已弃用和/或专有的API,这些API不属于JavaSE公共API的一部分。 - Marko Topolnik

-3

这要看情况而定。

你的问题有点不清楚。"是否能像以前一样工作"和"现有代码可以使用Java 8的所有新功能"似乎是相互矛盾的。

如果你正在使用Lambda表达式(Java 8功能),则无法使用JDK7进行编译。相反,如果您正在使用JDK7进行编译,则无法使用JDK8中的任何新功能。

简而言之:如果你必须问,那么它可能不会像以前一样工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接