Android的Java版本与Java SE版本有什么关联?

73

我一直在想,用于Android开发的Java版本与Java SE版本有何关系。例如,今天我在阅读有关“类型推断和泛型方法”的内容,这是Java SE 7中新增的功能。我在想,“我能在Android代码中使用吗?”

当然,我可以将代码键入到Android项目中并查看是否编译通过,但如果我能在脑海中获得某种映射,我会更加高兴。

我已经尝试过通过谷歌搜索和检查Android文档等方式来寻找答案,但没有找到答案。

编辑:我更关心语言特性,例如Android Java语法版本与Java SE语法的关系。


类似且相关(但过时):https://dev59.com/CnRC5IYBdhLWcg3wKtz2 - Steve Blackwell
12
你是甲骨文公司的律师吗?如果是,我有保持沉默的权利 :) - Guido
这里有一个好的答案:https://dev59.com/42445IYBdhLWcg3wapvF - Andrey Aleev
2个回答

42

安卓版本与Java SE并无直接关系,尽管它使用了Apache Harmony SE 6库和工具的子集。是否支持/要求Harmony SE 7版本取决于安卓团队的决定。

编辑根据下面的评论,从KitKat开始,安卓已经支持Java SE 7语言特性。


9
可以这样说,Android 的语法大致相当于 Java SE 6,但库有很大的不同。 - jfritz42
4
可以肯定地说,如果他们切换到 Java SE 7 兼容性(如二进制文字、开关语句中的字符串等),那么这将会被广泛宣传。 - pents90
2
FYI,Apache在去年11月决定终止Harmony项目。因此看起来我们可能永远不会看到SE7或更高版本了? - Tony Chan
4
@Turbo 它可以与KitKat(buildToolsVersion 19)一起使用。在这里看一下:链接 - ndev

1

没有直接的映射关系:

  • API 的某些部分(例如 JAXB,至少从 Java 6 开始就存在)从未在 Android 上可用。
  • 当引入新 Java 版本的功能时,这可能会逐渐发生多个版本。
  • 一些较新的 Java 功能作为后移版本提供给早期发布的版本。

过去,谷歌需要大约 2-3 年的时间才能开始采用新的 Java 版本。Java 7 功能开始出现在 API 19 (KitKat) 上。Java 8 功能从 API 26 (Nougat) 开始,但是可以使用称为 desugaring 的机制使某些 Java 8 功能在早期 Android 版本上可用,而不考虑它们的 API 级别。

因此,一般来说,如果您想知道特定的 Java API 功能在 Android 上是否可用,请在 Android 开发人员参考中查找并检查最低 API 版本。


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