我一直想知道 Scala 是否有任何特定的属性使其本质上依赖于 JVM,或者它是否可以在其他东西之上可行。我可以看到 JVM 的普遍性和持续改进,以及 Java 和 Scala 之间的互操作性如何成为这一战略选择的有力论据。但是,据我了解,出于这个原因,compromises是在语言设计中制作的。
如果 JVM 衰落的日子到来了,Scala 会随船一起倒下,还是 JVM 之后还有生命?
最佳答案
有项目让 Scala 在 .NET runtime 上运行(已停产,工作人员 is improving the compiler backend for future versions of Scala )和 LLVM (卡住)。此外,Scala -> Javascript 有多个后端(例如 scala js ),所以我想说在某种意义上可以将 Scala 从 JVM 中解开。
同时,许多 Scala API 依赖于 Java API,许多优化和内部工作都是针对 JVM 实现的。关于没有 JVM 的 Scala 上的邮件列表有很多讨论,Scala with it's own virtual machine等等,例如 this one ,但据我所知,官方的声明是支持非主流的JVM(例如Avian),而不是拥有自己的运行时。这样 Scala 可以在 iOS 和 Android(当然还有 PC)上运行。
如Simon Ochsenreither noted, Avian is not just yet-another JVM ,但与 HotSpot 相比具有一些明显的优势:
关于scala - scala 与 JVM 的联系有多紧密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875769/