Android中可以使用Java 7/8吗?

4

Android是一个伟大的移动平台,使用Java作为编程语言(有很好的理由)。但是,Java语言正在不断发展进步,版本7带来了一些小的语言改进,而明年将推出期待已久的lambda表达式的版本8。

我的问题是:Android会运行Java 7或8吗?或者采用它们的某些构造?

更新:仅供不信者参考:在Android Kitkat 4.4中,我们可以使用Java 7的好处:ARM、字符串的switch、菱形等。是的!我希望不久就能获得lambda表达式和Java 8的功能。


8
既然我们不是Android开发者,我们不知道也回答不了你。 - thegrinner
1个回答

9
根据工具组的说法,Android今天与Java 7兼容,尽管我个人还没有尝试过。这意味着您可以使用Java 7编译器编译Android项目,并且构建工具将接受Java 7编译器输出。据我所知,只添加了一种新的字节码(invokedynamic之类的),这是为解释器而不是javac编译器准备的。
由于Java 8尚未最终确定,而且谷歌不倾向于透露此类未来细节(特别是在进行中的诉讼情况下),所以Java 8发布后我们才会知道。

你的意思是所有Java 7的结构,比如java.awt.Point在Android中都有吗?还是说Java 7运行时在Android上以某种方式工作?我对"Android可以使用Java 7"这个说法感到困惑。 - William Morrison
@WilliamMorrison:不是这样的。抱歉,我的意思是Java 7编译器输出将与构建工具一起使用来创建APK。考虑到正在进行的诉讼,如果有的话,我会感到惊讶,如果Java 7类很快被添加到Android中。 Android有自己的运行时(Dalvik VM)。 - CommonsWare
那么我可以在Android中使用像try with resources这样的功能吗? - Nestor Hernandez Loli
@CommonsWare 感谢您的澄清。还有感谢您过去所有帖子所提供的帮助。+1 - William Morrison
@NestorHernandezLoli:“try with resources”要求资源实现AutoCloseable,而这在Android的类库中不存在:http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html - CommonsWare

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