使用Scala进行Android开发

9
我不是安卓开发者也不是Java专家,但是我最近一直在搜索使用Scala开发安卓应用的方法。我发现了一些类似于Android上的Scala等内容,还有很多问题和答案,但大多数都已过时(它们主要集中在2013年至2017年之间)。此外,Android上的Scala的最后一个版本发布于2017年。因此,我猜那里没有真正的改进。
我在某个地方读到说,Java中的Lambda表达式是主要问题,但这并没有道理。是什么原因阻止开发者在安卓中使用Scala?
我知道Kotlin是开发安卓的首选方式,但有没有办法在Scala中开发整个应用程序?这可行吗?如果可以,这是个好主意吗?
Scala 3呢?新版Scala有希望被用于安卓开发吗?

1
我真希望我能点两次赞给这个问题。希望有人能写一个好的答案——我也想知道答案。 - EJoshuaS - Stand with Ukraine
1个回答

5
广泛的原因是,官方Scala编译器的维护者决定仅发出针对Java虚拟机版本的字节码,而Google当时并不支持将其编译为Dalvik。 (可能受到 Oracle v. Google 法律诉讼的影响)。在此期间,Google已添加了对一些Java 8特性的支持。但是,该支持不完整,并且Scala使用了一些Google工具不支持的功能。 这个scala-lang.org的讨论涵盖了构建2.13版Android应用程序所需跳过的一些主要障碍;其中包括修补Scala标准库以使集合起作用。看起来,Scala 2.13.7有机会被修补以解决至少一些问题。 与此同时,历史悠久的Scala on Android项目基本上已被放弃;显然已经开始努力启动一个基于Scala 2.13和Scala 3的新项目。

谢谢你的回答,它帮了我很多,但我不认为一些JVM版本问题会阻止一个功能强大的Android开发函数式编程语言。 Kotlin就像是一个漂亮的Java,我理解是这样的(如果我错了,请纠正我,我不是Kotlin专家!)。此外,Scala是可扩展的,我认为它将对小型和大型应用程序都产生巨大影响。 - Milad
Scala是可伸缩的,但不是那个意思)) 我认为编译后的Scala往往比Java更大、更慢 - 有很多非常小的类。对于后端来说可以忽略不计,但我不确定它是否最适合移动开发。 - Yaroslav Fyodorov
2
并不是版本控制的问题。Android并不支持Java VM / Java平台的所有功能。最终使用了Android不支持的部分的程序将无法在Android上运行。由于某些原因(性能?),Scala的标准库使用了其中的一些部分。这个问题可以解决吗?很可能可以通过添加第四个编译目标来解决:JVM、JS、本地和Android(实际上直接编译为Dalvik会很有趣...)。核心团队是否有兴趣投入精力进行这项工作呢?也许不是,但这是开源的... - Levi Ramsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接