我一直想知道Scala是否有任何特定的属性使其本身依赖于JVM,或者它是否可以在其他东西之上存在。我可以看到JVM的无处不在和持续改进以及Java和Scala之间的互操作性如何成为这一战略选择的有力论据。但是,据我所知,compromises是在语言设计中制作的。
如果JVM的衰落日期到来,那么Scala会不会继续下船,或者JVM之后会有生命吗?
答案 0 :(得分:20)
有些项目让Scala在.NET runtime上停止运行(已停止使用,is improving the compiler backend for future versions of Scala}和LLVM(卡住)。此外,Scala还有几个后端 - > Javascript(例如scala js),所以我想说在某种意义上可以从JVM解开Scala。
同时,许多Scala API依赖于Java API,许多优化和内部工作都是针对JVM实现的。关于 Scala没有JVM ,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相比具有一些明显的优势: