scala与JVM的关系有多强?

时间:2013-07-26 07:47:54

标签: scala jvm

我一直想知道Scala是否有任何特定的属性使其本身依赖于JVM,或者它是否可以在其他东西之上存在。我可以看到JVM的无处不在和持续改进以及Java和Scala之间的互操作性如何成为这一战略选择的有力论据。但是,据我所知,compromises是在语言设计中制作的。

如果JVM的衰落日期到来,那么Scala会不会继续下船,或者JVM之后会有生命吗?

1 个答案:

答案 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相比具有一些明显的优势:

  • 能够创建原生的,自包含的,可嵌入的二进制文件
  • 在iPhone,Android和其他ARM目标上运行
  • 完全支持AOT和JIT编译
  • 支持尾调用和延续
  • 可理解的代码库
  • 响应式维护者
  • 开放进行改进(价值类别,专业化等)