针对.NET的Scala交叉编译

 本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2011/07/Scala.NET

Java平台的流行语言Scala现在准备进军.NET了,这要归功于école Polytechnique Fédérale de Lausanne发起的项目,该项目还得到了微软的资助。这个项目主要使用了Jeroen Frijters的IKVM,它是一个运行在CLR(.NET与Mono)之上的Java虚拟机。

早在2006年InfoQ成立之际,我们就一直在报道Scala相关的新闻,那时的Scala每个月只有可怜的1,000个下载量。从那时起,Scala就在Java世界中展开了狂风暴雨般的攻势,一些知名的站点如Twitter就使用Scala构建后端系统。甚至连欧洲研究委员会也开始资助Scala。

最初,Scala提供了对.NET平台的支持,但后续就没人维护了,最后一个公开发布版使用的还是Scala 1.4,现在已经无从寻觅了。来自EPFL的Miguel Garcia说到

交叉编译器非常棒,但却只能运行在JDK上。其源代码严重依赖于JDK API。这是典型的Scala应用的做法。Scala程序员们依旧在大量使用JDK提供的特性,但很多时候Scala SDK也提供了相同的功能。我们拥有交叉编译器,但却没有办法通过调用.NET环境中的库来自动替换掉对JDK的依赖。

Scala真正需要的是能以自动化的方式通过IKVM库替换掉对JDK的依赖。Miguel Garcia继续说到:

第一步是创建一个源代码级别的初始转换集合。接下来扩展Scala编译器以应用这些转换。但并不是所有编译器都足够灵活到可以提供这些服务。Scala编译器的模块化做的非常好,并且还支持插件,因此使用起来就会容易得多。新的Scala插件JDK2IKVM就可以批处理的方式应用这些源代码级别的转换。接下来,生成的源代码再经过其他标准的编译器编译并使用IKVM库引用来生成MSIL字节码。这样,Scala.Net就诞生了,它可以编译自身。

EPFL的Scala小组还计划为Scala提供一个Visual Studio插件。

你可以直接在MS Visual Studio中开发Scala程序。今秋将要发布的Visual Studio Scala插件将会支持IDE的一些基本功能,如代码完成、代码浏览、换行符、表达式及异常报告等等。然而短期来看,目前的插件还不支持代码完成与代码浏览。出于这个原因,一些开发者可能更愿意使用Eclipse或Intellij在JVM上编写代码,然后在Visual Studio中进行最后的调试。感兴趣的读者可以查看“上手”指南以及关于Scala.Net项目的介绍。

查看英文原文:Cross-Compiling Scala for .NET

posted on 2011-07-31 19:52  Hibernate4  阅读(182)  评论(0编辑  收藏  举报

导航