定位JVM而不是x86有什么缺点?

Pin*_*juh 12 compiler-construction jvm

我正在开发一种新语言.我最初的目标是为Windows平台编译为原生x86,但现在我有疑问.

我见过一些新语言针对JVM(最着名的Scala和Clojure).当然,不可能轻易地将每种语言都移植到JVM上; 这样做可能会导致语言和设计的微小变化.

在提出这个问题之后,我甚至怀疑这个决定.我现在知道一些"专业"JVM参数.最初的问题是:在为新语言创建编译器时,目标JVM是个好主意吗?

更新了问题:在Windows上以JVM而不是x86为目标有哪些缺点?

Wil*_*ung 7

您可能希望查看目标LLVM而不是JVM.LLVM可用于定位许多体系结构,包括x86.

可移植性比简单的CPU支持更多,但LLVM可以提供很多帮助,如果您愿意,仍然可以为您提供本机代码.


mik*_*era 5

针对JVM是一种非常经过实践检验的方法.Clojure,Scala,JRuby和许多其他语言成功的事实应该给你一些保证.

我的总体观点是,JVM可能是目前新/实验语言的最佳目标,特别是如果您希望在利用真正出色的JIT编译器和大量非常强大的库的同时实现跨平台功能.

话虽如此,我认为针对JVM可能遇到的主要缺点如下:

  • 在字节码级别缺乏尾递归支持.有很多方法可以解决这个问题(例如,参见Clojure的"复现"特殊形式),但对于某些语言实现,尤其是函数式语言来说,它很烦人.最终可能会在未来的Java版本中修复.

  • 显而易见,但您需要在客户端上安装JVM.现在通常不是问题,但仍有一些情况可能会很棘手.

  • Java中的基元(int,long,float等)的行为与对象系统的其余部分不同.您可以再次解决这个问题,但对于语言实施者来说,这是一些额外的麻烦.

一些可能有用/有趣的链接: