关于Scala虚拟机的一些疑问


我最近一直在学习scala这种被成为下一代java的语言,应该说它的一些特性挺吸引人的。但我最近注意到Eclipse推出了一个叫做 Xtend 的语言,在新闻中提到

Eclipse Xtend可以编译成可读的Java代码,类似CoffeeScript之与Javascript。

什么意思?就是把一种语法替换成另一种而已,其机理有点像我们使用的模版引擎,模版语言最终会被替换成目标语言执行。那么scala呢?似乎高级一点,它是直接编译成java class的(或者.net平台的CLR代码)。

但很重要的一点是它本身没有虚拟机实现或者更加底层的支持。那么我想问的是

  1. Scala没有自己的虚拟机到底有没有问题,这是否会影响它作为一种语言的独立性和执行效率
  2. java虚拟机,以及CLR虚拟机跟其它的虚拟机有什么区别。因为我发现在这两个虚拟机上有很多其它语言的实现,比如JRuby, JPython, IronPython等等。但是像ruby, python这种语言又都有自己的虚拟机,但没听说在它们的虚拟机上又衍生出什么语言的。

scala

船长COCO 10 years, 9 months ago

1.scala编译器是把.scala编译成bytecode运行在jvm上,因此受限于jvm,当然对scala有极大的影响。从我个人观点来看scala更像是java语言上的一种更高层的封装,例如scala的covariance和contravariance。
2.jRuby这些是希望在ruby的灵活性上能够使用java各种类库,且经过编译之后能获得性能上的提高,ruby做dsl是很方便的。

魔法G之敌 answered 10 years, 9 months ago

Your Answer