gpt4 book ai didi

android - Jack(Java Android Compiler Kit)将如何影响 Scala 开发者

转载 作者:IT老高 更新时间:2023-10-28 21:35:28 24 4
gpt4 key购买 nike

现在发布 Jack谷歌阐明了 Java 与 Android 相关的可预见 future 。但是对 Scala 和其他基于 JVM 的语言开发人员有什么影响。特别是:

  1. Scala 之所以如此神奇,是因为它拥有生成 Java 字节码的编译器。 But Jack toolchain doesn't deal with bytecode .生成的字节码会获得 Jack 处理的任何优化优势吗?
  2. 从 Scala 12 开始,仅支持 Java 8+。那就是生成的字节码也是Java 8+。 Jack 可以使用 Java 8 字节码(不受限制或不受限制)吗?
  3. 是否可以使用新支持的 Java 8 功能为旧 Android 版本(minSdkVersion < 'N')进行开发,或者我应该为每个 Java 版本维护单独的分支? (从文档中不清楚)。

所有这些问题都归结为一个问题:Scala future 能否在不牺牲 Scala 新特性和新 Android 工具链优势的情况下用于 Android 开发?

相关阅读:

请在评论或答案中分享相关链接

相关问题:

相关:

请为 Jack 工具功能请求投票:


编辑:

我正在尝试推理(不回答)我的问题,希望如果我错了专家会纠正我。

下面是 Jack 构建的假设流程,其中包含一些额外的 block ,这些 block 是根据我的逻辑和我从可用文档中学到的知识添加的。

基本假设是 Dalvik 最多支持 Java 7 字节码指令。如果这是正确的,Java 8 指令不能直接传递给 Dalvik,它们应该以某种方式转换为 Java 7。(可能类似于 Scala 编译器总是做的事情)。

问题是这种转变发生在哪里?似乎 Jill 目前无法处理 Java 8 字节码,因此这可能发生在假设流程的 block (3) 中。如果这是正确的,那么只有 Java 源项目文件需要进行转换,并且第二个问题的答案是 - 不。在 Jill 能够做到之前,不能使用库中的 Java 8 类(如果可能的话)。那就是我们不能使用 Scala 12+。

如果在 block (6) 中执行所有代码优化,那么第一个问题的答案是 - 是。转换为库 .jar 的 Scala 代码可以从 Jack 优化中受益。但最初应该将其转换为 .jayce(类似 AST 的表示),这会增加构建时间。

最后,Jack 生成 .dex Dalvik 字节码以保持与旧版 Dalvik 运行时的兼容性(ART 也使用 Dalvik 字节码)。所以3-d question的答案是:是的,可以使用Java 8 的特性。但仅在项目 Java 源代码中。应用程序仍然与任何运行时兼容。但是由于转换为 Java 7(Dalvik 字节码),Java 8 的优势就消失了。


enter image description here

最佳答案

了解引入了2个工具很重要:

所以听起来这里有 2 个单独的问题:

  • Scala 兼容性:
    Jack 不支持 Scala,因为 Jack 编译 Java 源代码。
    然而 Scala 2.11 编译为 Java 1.6 字节码,因此 Jill 将能够选择该代码并转换为 jack 文件以提供给 Jack 编译器。
    Android N Java 8 features (Jack compiler) and Kotlin interop (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

关于android - Jack(Java Android Compiler Kit)将如何影响 Scala 开发者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35958814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com