现在,随着杰克的发布,谷歌澄清了Java相对于安卓的可预见的未来。但是对Scala和其他基于JVM的语言开发人员有什么影响呢?特别是:
所有这些问题归结为一个问题: Scala将来能用于Android开发而不牺牲Scala新特性和新Android工具链的好处吗?
相关阅读:
请在评论或回答中分享相关链接。
相关问题:
相关信息:
请投票支持插孔工具功能要求:
编辑:
,我试图对我的问题进行推理(而不是回答),希望专家能纠正我的错误。
下面是杰克构建的一个假设流程,它包含一些额外的块,这些块是根据我的逻辑和我从可用的文档中学到的。
基本假设是Dalvik支持Java 7字节码指令。如果这是正确的,Java 8指令不能直接传递给Dalvik,则应该以某种方式将它们转换为Java 7 (可能类似于Scala编译器总是这样做)。
问题是,这种转变是在哪里发生的?看来Jill目前还不能处理Java 8字节码,所以这种情况可能发生在假设流的块(3)中。如果这是正确的,那么只有Java源文件可以进行转换,而的第二个问题的答案是-否。只有Jill能够使用库中的Java 8类(如果可能的话),才能使用它。也就是说,我们不能使用Scala 12+。
如果所有的代码优化都是在块(6)中执行的,那么的第一个问题是是-是的。转换为库.jar的Scala代码可以从Jack优化中受益。但初步来说,应该将其转换为.jayce (类AST表示),这将增加构建时间。
最后,Jack生产.dex Dalvik字节码以保持与旧的Dalvik运行时的兼容性(ART也使用Dalvik字节码)。因此,3-d问题的答案是:是的,可以使用Java8特性。但只在项目Java源代码中。应用程序仍然与任何运行时兼容。但是由于转换到Java 7 (Dalvik字节码),Java 8的优势被放弃了。
发布于 2016-03-24 04:01:03
重要的是要了解有2工具介绍了:
因此,听起来好像有2单独的问题在这里:
发布于 2016-03-24 14:56:41
琼是对的,但我认为Jill在某种程度上会支持Java 8,否则在android应用程序将使用的android库中使用Java 8是不可能的,因为它们将代码打包到aar内部的jar文件中,而且我认为这种格式变化不会很快发生。无论如何,我们只能猜测,因为谷歌目前是一个黑匣子在这些类型的变化。
自2017年新信息发布以来,进行了修订:杰克工具链现在不再受欢迎,旧的dex/javac堆栈将得到java8支持,所以现在scala不会有任何变化。
发布于 2017-03-14 23:49:50
Google刚刚宣布,Jack工具链将不再支持Jack工具链,并且Android增加了“对Java 8语言特性的支持,直接进入了当前的javac和dx工具集”
来源:https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
我们知道我们的Android开发人员非常关心对Java 8语言特性的良好支持,而且我们正在改变支持它们的方式。
以及:
我们已经决定将对Java 8语言特性的支持直接添加到当前的javac和dx工具集中,并放弃使用Jack工具链。
https://stackoverflow.com/questions/35958814
复制相似问题