android java会支持java 8中的lambda表达式吗?

Wil*_*ill 57 java android dalvik java-8

据我所知,dalvik vm中的"java"在API和体系结构等方面与Java se不同.但语法始终是相同的.(如果我错了,请纠正我)

现在java 8lambda表达式的支持即将发布,android java会跟着吗?google或aosp承诺让dalvik与java se一致吗?

更新:现在和Android 4.4 Kit Kat(API 19)一样,Java 7语法已被正式支持.来自android.com的消息来源

kap*_*pex 33

Android不使用Oracle的Java SE版本,它基于Apache Harmony项目的部分,因此它甚至不支持Java 7. Harmony不再开发,不支持1.7.

除非Google决定将Harmony和Android SDK升级到更新的Java版本,否则Android中将不会有任何Java 7或Java 8功能 - 即使新功能只是语法上的.他们可以使用像OpenJDK这样的替代实现,但我不知道有任何计划.有些人认为,由于Google和Oracle之间的诉讼,使用OpenJDK的可能性不大.


Java 7的一些功能,最值得注意的是:菱形运算符,多重捕获,字符串切换以及在Android N中也有一些Java 8特性,如lambda表达式已经在Android中实现,因为这个答案是写的.(感谢 Ross Stefan在评论中提到它).

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

  • 最近的Android SDK已经使这个答案不正确.支持Java 7语法. (5认同)
  • Android N正在转向OpenJDK.java.util.function包今天已合并到AOSP libcore主服务器中.这包括接口默认方法和lambda表达式的使用.快速浏览一下这个AOSP工具链/ jack提示表明新的"Jack"编译器确实可以重写lambda表达式:http://bit.ly/1KUvqm6据我所知,Git master中的集合代码仍然基于OpenJDK 7.所以,还没有Stream API的迹象. (4认同)
  • 现在有一些Java 7功能可用.主要观点仍然存在:Google不能在没有付出巨大努力的情况下切换到Java 8,并且需要自己实现这些功能.他们决定为Java 7的部分内容执行此操作,但似乎他们仍然没有真正传达任何支持Java 8的计划.以下是关于此主题的另一个问题,并提供了一个很好的答案:http://stackoverflow.com/q/16921337/897024 (3认同)
  • 以下是Android N将支持Java 8的官方确认:http://developer.android.com/preview/j8-jack.html Streams仍然缺失,但昨天已经集成了java.util.Spliterator.鉴于目前的速度,我预计我们将在5月份看到Stream API. (2认同)
  • java.util.stream包今天已合并到AOSP libcore主服务器中. (2认同)