首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Jack (Java编译器工具包)将如何影响Scala开发人员

Jack (Java编译器工具包)将如何影响Scala开发人员
EN

Stack Overflow用户
提问于 2016-03-12 06:24:36
回答 3查看 1.7K关注 0票数 37

现在,随着杰克的发布,谷歌澄清了Java相对于安卓的可预见的未来。但是对Scala和其他基于JVM的语言开发人员有什么影响呢?特别是:

  1. Scala做到了--这是因为自己的编译器产生了Java字节码。但是Jack工具链不处理字节码。生成的字节码会从Jack处理中获得任何优化好处吗?
  2. 从Scala 12开始,只支持Java 8+。也就是说,生成的字节码也是Java 8+。Jack能否利用Java 8字节码(没有或有限制)?
  3. 新支持的Java8功能可以用于开发旧版本的安卓版本(minSdkVersion < 'N')还是为每个minSdkVersion维护单独的分支?(从文件中看不清楚)。

所有这些问题归结为一个问题: 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的优势被放弃了。

EN

回答 3

Stack Overflow用户

发布于 2016-03-24 04:01:03

重要的是要了解有2工具介绍了:

因此,听起来好像有2单独的问题在这里:

  • Scala兼容性: Jack将不支持Scala,因为Jack编译Java源代码。 然而,Scala2.11将编译为Java1.6字节码,因此Jill将能够选择该代码并转换为jack文件来为Jack编译器提供服务。 参见Android 8特性(Jack编译器)和Kotlin互操作(Kotlin是与Scala相同的问题,因为它是JVM语言)
  • Java 8,因此Scala 2.12+,兼容性: 这个部分正在开发中,如果Jack/Jill支持Java 8,那么它也将支持Scala 2.12+ (通过Jill)。如果不是,Java 8开发人员与Scala 2.12开发人员处于同一条船上。 在这种情况下,Jack支持Java 8,而不支持Jill,那么Java 8库开发人员将与Scala 2.12开发人员处于同一条船上。 见第三版https://www.guardsquare.com/blog/DroidconLondon2015
票数 6
EN

Stack Overflow用户

发布于 2016-03-24 14:56:41

琼是对的,但我认为Jill在某种程度上会支持Java 8,否则在android应用程序将使用的android库中使用Java 8是不可能的,因为它们将代码打包到aar内部的jar文件中,而且我认为这种格式变化不会很快发生。无论如何,我们只能猜测,因为谷歌目前是一个黑匣子在这些类型的变化。

自2017年新信息发布以来,进行了修订:杰克工具链现在不再受欢迎,旧的dex/javac堆栈将得到java8支持,所以现在scala不会有任何变化。

票数 2
EN

Stack Overflow用户

发布于 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工具链。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35958814

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文