我可以在没有使用scala-native的JVM的情况下运行我的scala程序吗?

时间:2016-05-25 18:56:44

标签: scala jvm scala-native

我最近听说过scala-native,听起来很有趣! 我很好奇本土意味着什么? “提前编译器”是什么意思?
我认为web sitegithub repository中的描述不明确。

2 个答案:

答案 0 :(得分:16)

  

我可以使用scala-native在没有JVM的情况下运行我的scala程序吗?

是的,Scala Native的目标是支持在没有任何VM的情况下编译Scala程序。我们还没有稳定版本,follow us on twitter是第一个知道何时发生这种情况的人。

  

我很好奇本地意味着什么?

Scala历来是一种在Java虚拟机上运行的语言。与本机应用程序不同,Java应用程序构建在附加的间接层之上,该间接层将虚拟机指令映射到底层硬件指令。代码仍然最终编译为本机代码,唯一的区别是它会在应用程序运行期间发生。这也称为即时编译策略。

  

“提前编译器”是什么意思?

“提前”意味着在实际运行应用程序之前,事先完成从高级Scala代码到低级本机代码的映射。这为我们节省了一些间接开销,并减少了整体资源消耗。

答案 1 :(得分:2)

来自github自述“项目目前处于预发布状态”的关键信息,最近才公布。

Native通常意味着在“裸机”上运行,生成具有非虚拟机特定二进制指令的二进制文件(例如x86机器代码)。

提前意味着最终的机器指令是在编译阶段产生的,与“Just In Time”编译器不同,例如在JVM中用于将JVM字节码转换为适当的优化机器指令。请参阅this问题的已接受答案,以便对这些概念进行非常好的解释。