银河

SKYIV STUDIO

  博客园 :: 首页 :: 博问 :: 闪存 :: :: :: 订阅 订阅 :: 管理 ::
  268 随笔 :: 2 文章 :: 2616 评论 :: 140万 阅读
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

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

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

在 Ubuntu 9.10 操作系统上安装 Scala SDK 是非常简单的一件事:

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

posted on   银河  阅读(3294)  评论(4编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2006-12-22 在 Linux 下运行 ASP.NET 2.0
点击右上角即可分享
微信分享提示