18

我一直想知道 Scala 是否有任何特定的属性使其本质上依赖于 JVM,或者它是否可以在其他东西之上可行。我可以看到 JVM 的普遍性和持续改进以及 Java 和 Scala 之间的互操作性如何成为这一战略选择的有力论据。但是,据我了解,出于这个原因,在语言设计上做出了妥协。

如果 JVM 衰落的日子到来,Scala 会随船一起倒下,还是 JVM 之后还有生命?

4

1 回答 1

20

有一些项目让 Scala 在.NET 运行时(已停产,从事该项目的人正在改进 Scala 未来版本的编译器后端)和LLVM(卡住)。此外,Scala -> Javascript 有几个后端(例如scala js),所以我想说在某种意义上可以将 Scala 从 JVM 中解开。

同时,许多 Scala API 依赖于 Java API,许多优化和内部工作都是针对 JVM 实现的。关于没有 JVM的 Scala上的邮件列表,Scala 有自己的虚拟机等等,有很多讨论,例如这个,但据我所知,官方声明也是支持非主流 JVM(Avian for例如),而不是拥有自己的运行时。这样 Scala 可以在 iOS 和 Android(当然还有 PC)上运行。

正如Simon Ochsenreither 所指出的,Avian 不仅是另一个 JVM,而且与 HotSpot 相比具有一些明显的优势:

  • 能够创建本地、独立、可嵌入的二进制文件
  • 在 iPhone、Android 和其他 ARM 目标上运行
  • 完全支持 AOT 和 JIT 编译
  • 支持尾调用和延续
  • 可理解的代码库
  • 响应式维护者
  • 开放改进(价值等级、专业化等)
于 2013-07-26T08:07:20.213 回答