首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >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

复制
相关文章
jquery当中toggleClass的用法
例 1.4(toggleClass.html) <html> <head> <title>toggleClass()方法</title> <style type="text/css"> <!-- .qieClass{     background-color:#00FF00; } --> </style> <script language="javascript" src="jquery.js"></script> <script language="javascript"> $(function(){     //当点击<P>标签时触发事件     $("p").click(function(){         //this表标jquery对象$("p")         //点击的时候不断切换,当有qieClass样式时就去掉样式,否则添加样式 。         /*通过下面的方法可以回到传统的模式*/         alert(this.firstChild.nodeValue);         $(this).toggleClass("qieClass");     }); }); </script> </head> <body>     <p>点击这里</p>     <p>点击这里2</p> </body> </html>
马克java社区
2021/02/01
5660
jquery当中toggleClass的用法
jQuery源码解析之addClass(),removeClass(),toggleClass()和hasClass()
(3)stripAndCollapse 作用: 将vaues以空格分开,再以空格拼接
进击的小进进
2022/03/28
7530
jQuery源码解析之addClass(),removeClass(),toggleClass()和hasClass()
jQuery - 获取并设置 CSS 类
下面的例子展示如何向不同的元素添加 class 属性。当然,在添加类时,您也可以选取多个元素:
陈不成i
2021/07/22
2.2K0
jQuery 替换元素中class的方法
实现方法: ① 使用removeClass()删除旧的class ② 使用addClass()添加新的class ③ 使用attr 直接替换原class ④ 使用 toggleClass 有就移除,没有就添加
青梅煮码
2023/01/16
2.4K0
移除Blog对jQuery的依赖 By HKL, Tues
1.由于博客其实动态功能并不多,而且很多都是多年前完全不懂前端的情况下写的,所以有些功能没有考虑好,现在再看了一下前端代码部分,发现很多DOM操作已经完全没有必要去用jQuery了,以后再加新功能也不会用到jQuery的特性,所以计划改写jQuery部分为原生javascript。
hiplon
2020/07/22
1.5K0
jquery教程之属性操作函数
prop 是针对元素本身就带有的固有属性,比如id class title name checked等
老雷PHP全栈开发
2020/07/02
8040
javascript操作元素的css样式
我们经常要使用Javascript来改变页面元素的样式。当中一种办法是改变页面元素的CSS类(Class),这在传统的Javascript里,我们一般是通过处理HTML Dom的classname特性来实现的;而jQuery里提供三种方法来实现这个功能,尽管它们和传统方法的思想相通,可是却节省了很多代码。还是那句话 – “jQuery让JavaScript代码变得简洁!” 1. addClass() – 加入�CSS类 $(“#target”).addClass(“newClass”); //#target 指的是须要加入�样式的元素的ID //newClass 指的是CSS类的名称 2. removeClass() – 移除CSS类 $(“#target”).removeClass(“oldClass”); //#target 指的是须要移除CSS类的元素的ID //oldClass 指的是CSS类的名称 3. toggleClass() – 加入�或者移除CSS类:假设CSS类已经存在,它将被移除;相反,假设CSS类不存在,它将被加上。 $(“#target”).toggleClass(“newClass”) //假设ID为“target”的元素已经定义了CSS样式,它将被移除; //反之,CSS类”newClass“将被赋给该ID。
全栈程序员站长
2022/07/13
1.1K0
leetcode之转变日期格式
这里使用HashMap来映射英文的month,然后针对日期移除后缀,最后针对天不足两位的往前补零,最后拼接为指定的格式。
code4it
2020/11/09
5000
学习jQuery的基础使用
jQuery 是一个 JavaScript 库,jQuery 极大地简化了 JavaScript 编程,我们常用jQuery来处理Dom\事件\动画\AJAX
老雷PHP全栈开发
2020/07/02
1.1K0
JQuery-学习笔记03【基础——DOM操作】「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/01
1.9K0
JQuery-学习笔记03【基础——DOM操作】「建议收藏」
03-老马jQuery教程-DOM操作
jQuery DOM操作 在没有jQuery之前,DOM的操作相对来说有点麻烦,尤其是DOM节点的搜索。目前我们已经学习了jQuery的选择器,接下带大家一块学习jQuery的DOM操作,jQuery
老马
2018/01/05
1.6K0
jQuery实现点击图标div循环放大缩小功能
很基础的一个功能,点击左下角的图标按钮,地图的整个div会变大,变大预览之后,再次点击图标按钮,地图的整个div会变小,恢复原样,两个图标在地图界面的放大和缩小时间不断的切换图标状态(箭头向里面,或者箭头向外面)
王小婷
2018/09/26
3.9K0
jQuery实现点击图标div循环放大缩小功能
03-老马jQuery教程-DOM操作(上)
根据文章内容总结摘要。
老马
2017/12/27
1.7K0
jQuery地址显示隐藏和切换
上述示例中,我们创建了一个包含地址信息和切换按钮的容器。地址信息使用<p>元素进行展示,切换按钮使用<button>元素,并为其添加一个自定义的类名toggle-btn。
堕落飞鸟
2023/05/18
3.4K0
jquery样式操作
选择器获取的多个元素,获取信息获取的是第一个,比如:$("div").css("width"),获取的是第一个div的width。
Devops海洋的渔夫
2019/05/30
1.7K0
50个必备的实用jQuery代码段
本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助。其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助你又快又好地把事情完成。 如何修改jQuery默认编码(例如默认UTF-8改成改GB2312): $.ajaxSetup({ ajaxSettings:{ contentType:"application/x-www-form-urlencoded;chartset=GB2312"} }); 解决
大师级码师
2021/09/19
6.7K0
jquery setvalue_jquery on方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/04
3.3K0
jquery setvalue_jquery on方法
jQuery学习笔记
jQuery大部分功能需要根据文档的DOM模型来工作,首先需要正确地解析到整个文档的DOM模型结构。使用jQuery需要在整个文档被浏览器完全加载后才开始进行。
wangxl
2018/07/27
3.5K0
jQuery(一)
jquery为一种库,属于最基础的一个库,伴随着h5的到来,很多jquery的规则直接融入到了规则本身了,直接使用原生的js也能达到相同的目的。虽然如此,不过依旧要继续。
mySoul
2018/08/20
2.1K0
由npm向yarn的转变
npm实在是太慢了,慢到让人无法接受你晓得嘛!而且yarn在一定程度上是可以和npm混合使用的。
Akilar
2021/06/11
5510

相似问题

Maven依赖项不兼容库类

10

Spring Boot (Maven)中不兼容的依赖项

126

maven:检测依赖项

12

在maven中下载兼容的依赖项

25

在“颤振”中的依赖项中,检测生成错误不兼容类。

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文