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

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

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

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

ben@ben-m4000t:~$ sudo apt-get install scala
ben@ben-m4000t:~$ scalac -version
Scala compiler version 2.7.5final -- (c) 2002-2008 LAMP/EPFL
ben@ben-m4000t:~$ scala -version
Scala code runner version 2.7.5final -- (c) 2002-2008 LAMP/EPFL
ben@ben-m4000t:~$ 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
ben@ben-m4000t:~$

能够看出,安装的版本号是 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 文件夹下,例如以下所看到的:

ben@ben-m4000t:~$ sudo mkdir /usr/local/lib/scala-net
ben@ben-m4000t:~$ sudo mv mscorlib.dll predef.dll scalaruntime.dll /usr/local/lib/scala-net

 

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

 

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

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

 

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

ben@ben-m4000t:~/work/scala$ scalac-net dotnet.scala
ben@ben-m4000t:~/work/scala$ ilasm dotnet.msil
Assembling 'dotnet.msil' , no listing file, to exe --> 'dotnet.exe'
Operation completed successfully
ben@ben-m4000t:~/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
ben@ben-m4000t:~/work/scala$ 

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

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

 

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

ben@ben-m4000t:~$ 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
ben@ben-m4000t:~$ 

在 /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 的进一步话题。留待下一篇文章继续。

转载于:https://www.cnblogs.com/jzdwajue/p/6791287.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值