2013-02-11 49 views
56

据我所知,dalvik vm中的“java”在API和体系结构等方面与Java se不同,但语法一直相同。 (请纠正我,如果我错了)将java java支持java 8中的lambda表达式?

现在支持lambda expression in java 8即将发布,将android java关注它吗?谷歌或aosp诺言使达尔维克与java se一致吗?

更新:现在在Android 4.4 Kit Kat(API 19)中,Java 7语法已得到官方支持。 Source from android.com

+0

警告。我不知道 - 但虚拟机是否需要更改?据我了解,lambda只有编译器才知道。在封面之下,这只是一种表达匿名方法的方式 - 我认为......试试这个 - http://www.lambdafaq.org/最大的改变是为所有的泛型添加支持。 – Simon 2013-02-11 18:47:44

+16

为什么几乎所有我觉得有趣的问题都关闭了?是否有某种奇怪的竞争来结束最大数量的问题? – 2014-03-05 15:39:13

+1

@RossJudson - 问题在于大多数“有趣”的问题都是没有真正客观答案的问题。 SO的目标是提供客观的答案......而不是*“请求辩论,辩论,投票或扩大讨论”*。不,没有竞争。没有......投票结束问题不会增加你的声望。 – 2014-03-29 04:33:53

回答

32

Android不使用Oracle的Java SE版本it's based on parts of the Apache Harmony project,所以它甚至不支持Java 7.和谐不再被积极开发,并且不支持1.7。

除非Google决定将Harmony和Android SDK升级到更新的Java版本,否则即使新功能只是语法上的,Android中也不会有任何Java 7或Java 8功能。他们可以使用替代实现,如OpenJDK,虽然我不知道这个计划。有人认为,由于谷歌和甲骨文之间的诉讼,OpenJDK的使用不太可能发生。


Some features of Java 7,最显着的:钻石运营商,多抓,串开关和Android的ñ也some Java 8 features像lambda表达式已经在Android的已经实现,因为这个答案写。 (感谢RossStefan在评论中提及它)。

谷歌必须通过自己的努力来实现这些功能,似乎主要是为了更受欢迎的功能。

+5

最近的Android SDK已将此答案呈现为不正确。支持Java 7语法。 – 2014-04-21 16:04:09

+3

现在有些Java 7功能可用。主要观点仍然存在:Google不能毫不费力地切换到Java 8,而需要自行实现这些功能。他们决定为Java 7的某些部分做到这一点,但似乎他们仍然没有真正交流任何支持Java 8的计划。下面是有关此主题的另一个问题,其中有一个很好的答案:http://stackoverflow.com/q/16921337/897024 – Kapep 2014-04-21 20:19:46

+4

Android N正在转向OpenJDK。 今天已将java.util.function包合并到AOSP libcore主文件中。这包括接口默认方法和使用lambda表达式。快速浏览这个AOSP工具链/插件提交表明,新的“Jack”编译器确实可以重写lambda表达式:http:// bit。ly/1KUvqm6 据我所知,Git master中的集合代码仍然基于OpenJDK 7.因此,没有Stream API的迹象。 – 2016-02-16 18:07:59