BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

针对.NET的Scala交叉编译

| 作者 Jonathan Allen 关注 596 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2011年8月1日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

来个原生的 by 方 雷

交叉编译性能底。。。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT