scala - scala 与 JVM 的联系有多紧密?

标签 scala jvm

我一直想知道 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 相比具有一些明显的优势:

  • 能够创建本地、独立、可嵌入的二进制文件
  • 在 iPhone、Android 和其他 ARM 目标上运行
  • 完全支持 AOT 和 JIT 编译
  • 支持尾调用和延续
  • 一个可理解的代码库
  • 响应式维护者
  • 开放改进(值(value)等级、特化等)
  • 关于scala - scala 与 JVM 的联系有多紧密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875769/

    相关文章:

    java - 在 docker-compose 文件中指定 JVM 选项

    java - 以跨平台方式引用 tools.jar 的正确方法

    java - 如何从 JDK(SocketChannelImpl 和 SocketDispatcher)更改 Java native 代码(C 实现)并重新编译以与 JDK 一起使用?

    Java Maven 构建源和目标不工作

    scala self type 在使用 `extends` 时真的可以编译吗?

    json - Play Map[Int,_] 的 JSON 格式化程序

    scala - 找不到 Vaadin ClassResource

    从 Boolean 列表到求和 Int 列表的 Scala 匹配

    java - asm指令 'ta'和 '0xfffffffc'是什么意思?

    json - 使用 json4s 将 scala 对象转换为 json