也谈在 .NET 平台上使用 Scala 语言(上)

前几天。老赵发表了两篇文章:在.NET平台上使用Scala语言(上):初尝 和 在.NET平台上使用Scala语言(下):分析

我拜读了以后,对 Scala 语言也感兴趣。于是就開始了尝试。

在 Ubuntu 9.10 操作系统上安装 Scala SDK 是很easy的一件事:

[email protected]:~$ sudo apt-get install scala
[email protected]:~$ scalac -version
Scala compiler version 2.7.5final -- (c) 2002-2008 LAMP/EPFL
[email protected]:~$ scala -version
Scala code runner version 2.7.5final -- (c) 2002-2008 LAMP/EPFL
[email protected]:~$ scala
Welcome to Scala version 2.7.5final (OpenJDK 64-Bit Server VM, Java 1.6.0_0).
Type in expressions to have them evaluated.
Type :help for more information.
scala> :quit
[email protected]:~$

能够看出,安装的版本号是 2.7.5。离最新版本号 2.7.7 也不远了。Ubuntn 会定期更新其提供的软件。相信不久以后 Ubuntu 系统中的 Scala 软件包就会升级到更新的版本号。

从上图能够看出,Ubuntu 还提供了一些有关线性代数(Linear Algebra)等方面的 Scalable 包。

Ubuntu 提供的 Scala 软件包并不包括 sbaz 工具。这是因为 Ubuntu 使用自己 apt 工具进行软件包管理,所以会禁用其它的软件包管理工具。

比方说。象 Firefox 等软件的“检查更新”菜单项在 Ubuntu 系统也是被禁用或取消了的。

Ubuntu 系统中 Scala 的库文件放在 /usr/share/java 文件夹下,例如以下图所看到的:

而 Scala 编译器和解释程序放在 /usr/bin 文件夹下,例如以下图所看到的:

能够看出,在 Ubuntu 操作系统中,Scala 软件的各个文件是分散在操作系统的各处的,而不是集中在如同一个如同 /opt/scala-2.7 之类的文件夹下。这是 Debian 类型的 Linux 的设计哲学。这样的设计哲学与各种软件包各自集中存放的设计哲学各有好处和短处吧。假设要展开讨论。又是一场口水战了。:)

当然,在 Ubuntu 操作系统中也能够不使用 apt-get 命令,而是自己去 Scala 官方站点下载最新 Scala 2.7.7 的 Linux 安装包,自己安装,这样就会集中安装在一起了,并且也能够有 sbaz 工具了。

当然,这时候就要你自己负责 Scala 软件包的升级更新了,Ubuntu
操作系统可不会帮你升级更新不使用 apt-get 命令安装的软件包的。

因为没有 sbaz 工具,我们须要自己找来 mscorlib.dll、predef.dll 和 scalaruntime.dll 这三个文件,然后放到 /usr/local/lib/scala-net 文件夹下,例如以下所看到的:

[email protected]:~$ sudo mkdir /usr/local/lib/scala-net
[email protected]:~$ sudo mv mscorlib.dll predef.dll scalaruntime.dll /usr/local/lib/scala-net

然后再编写一个例如以下所看到的的 scalac-net 文件放到 /usr/local/bin 文件夹下:

这样,就准备好了 Scala 的 .NET 环境,能够開始干活了。

首先,编辑一个例如以下图所看到的的 dotnet.scala 源程序:

然后。按下面步骤编译和执行这个程序:

[email protected]:~/work/scala$ scalac-net dotnet.scala
[email protected]:~/work/scala$ ilasm dotnet.msil
Assembling ‘dotnet.msil‘ , no listing file, to exe --> ‘dotnet.exe‘
Operation completed successfully
[email protected]:~/work/scala$ mono dotnet.exe
       Scala.NET: 欢迎光临
      OS Version: Unix 2.6.31.16
     CLR Version: 2.0.50727.1433
Default Encoding: System.Text.UTF8Encoding
[email protected]:~/work/scala$

注意,在执行 dotnet.exe 之前。必须把 /usr/local/lib/scala-net/predef.dll 文件复制到当前文件夹下。

能够看出,Scala.NET 的 CLR 版本号已经是 2.0.50727.1433 了。

我们来看看这台机上有哪些 mscorlib.dll 文件:

[email protected]:~$ ls -l /opt/mono-2.6/lib/mono/*/mscorlib.dll /usr/lib/mono/*/mscorlib.dll /usr/local/lib/scala-net/mscorlib.dll
-rwxr-xr-x 1 root root 2092544 2009-12-18 10:01 /opt/mono-2.6/lib/mono/1.0/mscorlib.dll
-rwxr-xr-x 1 root root 2586624 2009-12-18 10:02 /opt/mono-2.6/lib/mono/2.0/mscorlib.dll
-rw-r--r-- 1 root root 2076672 2009-09-23 23:28 /usr/lib/mono/1.0/mscorlib.dll
-rw-r--r-- 1 root root 2565632 2009-09-23 23:29 /usr/lib/mono/2.0/mscorlib.dll
-rw-r--r-- 1 ben  ben  2070528 2009-12-22 10:35 /usr/local/lib/scala-net/mscorlib.dll
[email protected]:~$

在 /opt/mono-2.6/lib/mono 文件夹下的是 Mono 2.6.1 版本号的。请參见:在 Ubuntu 9.10 操作系统中安装 mono 2.6

在 /usr/lib/mono 文件夹下的是 Ubuntu 9.10 操作系统自带的 Mono 2.4.2.3 版本号的。

在 /usr/local/lib/scala-net 文件夹下的是 Scala.NET 的。

这五个 mscorlib.dll 文件的大小各不同样,看来是不同版本号的。

至于这些 mscorlib.dll 文件的版本号各是多少。以及 Scala.NET 的进一步话题。留待下一篇文章继续。

时间: 2024-12-17 09:07:56

也谈在 .NET 平台上使用 Scala 语言(上)的相关文章

也谈在 .NET 平台上使用 Scala 语言(中)

说我在单位的安装 Ubuntu 9.10 操作系统 Lenovo ThinkCentre M4000t 台式机上写完"也谈在 .NET 平台上使用 Scala 语言(上)"之后不久,就下班回家了.于是,我就在家里的安装 Windows Vista 操作系统的 Dell Inspiron 1520 本本上继续工作.首先就是启动 Sun Virtualbox 打开一个 Ubuntu 9.10 操作系统.而这个 Ubuntu 9.10 操作系统中尚未安装 Scala SDK 软件包.正好,我

也谈在 .NET 平台上使用 Scala 语言(续)

而我是在 Ubuntu 操作系统中使用 Scala.NET 的,应该没有这个问题. 那么,就让我们来测试一下吧. 现在,我们增加一个 DotNet.cs 文件,如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 using System; using System.IO; using System.

深度 | 邢波教授谈人工智能科学路径:为人工智能装上「无穷动」引擎

深度 | 邢波教授谈人工智能科学路径:为人工智能装上「无穷动」引擎 本文由邢波教授 授权转载 微信公众号:猫匣子 作者:邢波 有些人是因为对人工智能的原理不理解而导致,有些人是为了个人名望而宣扬人工智能威胁论,有些人则是为了商业的利益推动人工智能威胁论.——Yann LeCun   人工智能算法本身这个计算任务像登山,它是有明确的目标的,可以用数学描述和比较的目标,它本身有弹性.容错性.随机性.和客观的量化的可评估性 … 人工智能功能的提升和突破来源于理论模型,算法,和计算引擎的不断创新,缺一不

张小龙浅谈微信公众平台的意义

腾讯高级副总裁张小龙表示:微信公众平台,就是在移动互联网时代,让企业和个人以更简捷的形式提供服务给有需要的人. 张小龙浅谈微信公众平台的意义,布布扣,bubuko.com

龙芯GO!龙芯平台上构建Go语言环境指南

龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Griesemer.KenThompson和Rob Pike等世界顶尖计算科学家精心打造的系统编程语言.Go语言最显著的特点是编码简洁迅速.支持高效并发和自动内存管理等.此外,Go语言还面向网络服务器.存储系统和数据库等领域的编程进行了优化设计,并且简化了应用系统的安装和部署.因此,Go语言受到了广大程序员的

如何在Java平台上使用脚本语言做Java开发

如何在Java平台上使用脚本语言做Java开发     最近开始流行区分Java平台和Java语言,但很多Java开发者还是不能确定如何在 Java应用程序开发中结合脚本.本篇文章,Gregor Roth给出了在Java平台上使用脚本的方法.通过这篇文章,你可以了解怎样在你的Java应用程序中使用脚本,是否你要通过使用Groovy和 Jython把不同的Java应用程序模块粘合在一起,或者写一个你自己的基于JRuby的应用程序,适用于Java平台. 作为一个Java开发者,你可能已经注意到了,J

为什么PCB行业越来越多做线上推广、线上下单平台呢

为什么PCB行业越来越多做线上推广.线上下单平台呢 一. PCB传统生产行业现状分析 A. 市场容量 印刷电路板作为“电子产品之母”,广泛应用于通讯电子.消费电子.计算机.汽车电子.工业控制.医疗器械.国防及航空航天等领域,是现代电子信息产品中不可或缺的电子元器件,印制电路板产业的发展水平可在一定程度上反映一个国家或地区电子信息产业的发展速度与技术水准.在当前云技术. 5G 网络建设.大数据.人工智能.共享经济.工业 4.0.物联网等加速演变的大环境下,作为“电子产品之母”的 PCB 行业将成为

天方夜谈_PHP是世界上最好的语言

因为一无所知,接到学校建设网站的项目,特意学起了建设网站的知识,H5技术基本可以实现网页布局,稍加动感.接着学世界上最好的语言--PHP. 看到这个梗https://www.zhihu.com/question/26498147,在知乎上已经笑喷!低级趣味的一个翻译:PHP--看黄片?本来学JSP的,因为之前有一定的Java基础,上手快.但是我就没明白我们项目老师叫:去学PHP--(哈哈)世界上最好的语言. 当然了每一种语言的基础知识都是大同小异,比如:变量(PHP中还有几个supergloba

微信公众平台开发(5)-上传下载多媒体文件

回复图片.音频.视频消息都是需要media_id的,这个是需要将多媒体文件上传到微信服务器才有的. 将多媒体文件上传到微信服务器,以及从微信服务器下载文件,可以参考:http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件 上传下载多媒体文件的方法还是写到WeixinUtil.java中. 代码如下: import java.io.BufferedOutputStream; import java.io.BufferedReader; impo