当前位置: 首页 > 知识库问答 >
问题:

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

阳凌
2023-03-14

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

  1. Scala之所以如此神奇,是因为它有自己的编译器来生成Java字节码。但是Jack toolchain不处理字节码。生成的字节码会获得Jack处理的任何优化好处吗?
  2. 从Scala12开始,只支持Java8+。也就是说,生成的字节码也是Java8+。Jack可以利用Java8字节码吗(没有或有限制)?
  3. 新支持的Java8特性可以用于开发旧的Android版本(minSdkVersion<'n'),还是应该为每个Java版本维护单独的分支?(文档中不清楚)。

所有这些问题都归结为一个问题:Scala是否可以在不牺牲Scala新特性和Android新工具链的好处的情况下用于未来的Android开发

Jack(Java Android编译器套件)

新的Android工具链-杰克和吉尔

杰克和吉尔构建系统(幻灯片)

    null

相关的:

  • Scala-on-Android小组讨论

请投票支持杰克工具功能请求:

    null

如果在块(6)中执行了所有代码优化,那么第1个问题的答案是-是。转换为library.jar的Scala代码可以从Jack优化中受益。但是,首先应该将其转换为。Jayce(类AST表示),这将增加构建时间。

最后,Jack生成。dex Dalvik字节码,以保持与旧的Dalvik运行时的兼容性(ART也使用Dalvik字节码)。所以3-D问题的答案是:是的,可以使用Java8特性。但仅限于project Java源代码中。应用程序仍然与任何运行时兼容。但是由于转换到Java7(Dalvik字节码),Java8的优势被放弃了。

共有1个答案

暨弘懿
2023-03-14

重要的是要了解引入了两个工具:

>

  • jack:取代复杂的javac+proguard+dx的新编译器

    Jill:库链接器,可以链接当前编译的库(.class)等。
    参见http://tools.android.com/tech-docs/jackandjill

    所以听起来这里有两个独立的问题:

    >

  • Scala兼容性:
    Scala将不受Jack支持,因为Jack编译Java源代码
    但是Scala 2.11编译为Java1.6字节码,因此Jill将能够选择这些代码并转换为Jack文件来提供Jack编译器。
    请参阅 ;Android N Java 8特性(Jack编译器)和Kotlin Interop ;(Kotlin与Scala的问题相同,因为它是JVM语言)

    Java8以及Scala2.12+的兼容性:
    这部分正在开发中,如果Jack/Jill支持Java8,那么它也将支持Scala2.12+(通过Jill)。如果不支持,那么Java 8开发人员与Scala 2.12开发人员处于同一条船上。
    如果Jack支持Java8,但Jill不支持,那么Java 8库开发人员将与Scala 2.12开发人员处于同一条船上。
    see ;https://www.guardsquare.com/blog/droidconlondon2015

  •  类似资料:
    • 我更新了我的AndroidStudio2.1版本。根据Android Studio2.1支持Android N开发者预览,Android Studio2.1支持Jack(Java Android编译器工具包)编译器。 如何在Android Studio添加或使用杰克?

    • 问题内容: 我正在开发一个Web应用程序,因为它可以访问下面的数据库,所以我需要能够从Safari,Chrome,Firefox和Internet Explorer中禁用开发人员工具,并在Firefox和所有类似的应用程序中禁用Firebug。有没有办法做到这一点? 注意:数据库提供的AJAX框架要求提供给数据库的任何内容都必须在可修改的Web参数中,并且返回的所有内容都必须使用JavaScrip

    • 使用说明 概述 轻推JAVA-SDK是轻推开放平台面向Java开发者提供的发工具包。通过使用轻推JAVA-SDK,Java开发者可借助轻推高效地使用消息推送,安全登录等功能。 此文档面向Java开发者介绍轻推JAVA-SDK如何使用及相关注意事项。 使用步骤 步骤一:获取AppID以及AppSecret 登录轻推企业管理系统,编辑轻应用/订阅号,获取AppID以及AppSecret,若需要使用轻推

    • 我有一些遗留代码,其中包含一个浪费时间的循环,以便有时间完成eeprom读取(不好的做法): 但是,当为了提高速度而打开编译器优化时,会发生一些奇怪的事情。它不一定与该语句相关联,但我想知道编译器是否可能只是优化了时间延迟

    • 问题内容: 我正在努力上班。当我运行时,它告诉我我缺少Python开发人员软件包。如何获取并安装Python开发人员软件包? 我得到的错误如下: 系统(Amazon EC2实例) Apache 2.2.16(Unix) Amazon Linux(Red Hat 4.4.4-13)AMI Beta版本2011.02 的Python 2.6.6 问题答案: 将工作。 如果不起作用,请使用