CentOSにScala実行環境構築

と言うわけで本日は、CentOSプログラミング言語Scala(すけいら?すから?)の実行環境をインストールしてみたいと思います。
これまで学生時代から含めてアセンブラ、BASIC、C、C++JavaPHPVBA、.net、Ajax(JavaScript)、、、とメジャー所は少しずつかじってきましたが、久しぶりに初体験な言語を味見してみたいと思います。w

環境

CentOS 5.5 final (VMware Fusion)
jdk-1.6.0_17

Scalaのダウンロード、展開

まずはScalaをダウンロード、展開します。

# cd /usr/local/src/
# wget http://www.scala-lang.org/downloads/distrib/files/scala-2.8.1.final.tgz
# tar xvfz scala-2.8.1.final.tgz

とりあえずHello Worldでも

Scalaには対話型の実行環境、REPLというものが用意されているみたいです。
まだまだライブラリを展開しただけですが、とにかく早くScalaを味見してみたいので、パスを通したりすることもせずそそくさとREPLを使ってみましょう。w

# cd scala-2.8.1.final/bin
# ./scala
Welcome to Scala version 2.8.1.final (OpenJDK Client VM, Java 1.6.0_17).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

おぉっ!普通に動きました!
スケーラーな人達の間では当たり前かもしれませんが、javaのパスが通っていないと実行出来なかったと思います。

ではでは、Hello Worldでも、、、

scala> printf("Hello World");
Hello World

おぉっ!!(度々すみません。

次はいよいよコンパイル、実行までを見てみましょう。
ちなみにREPLを終了する時は、コンソールにexit、もしくは:qと入力しリターンするか、CTRL+Cで終了出来るようです。
ひとまずCTRL+Cで終了するのは気持ち悪いので、ここではexitでコンソールを終了します。

scala> exit
#

scalacでコンパイル

まずはコンパイル対象のobjectを作成しましょう。今回はシンプルに、以下のファイルを作成してみました。

# vi /home/akiiiiiiiio/hello.scala
object hello {  
    def main( arg:Array[String] ):Unit = {
        println( "Hello World")
    }
}

・・・ん?object・・・?
筆者自身、objectってなんですか?と思いながらも、何も考えずに作成してみました。w

いざコンパイルをば、、、

# ./scalac /home/akiiiiiiiio/hello.scala -d /home/akiiiiiiiio/
# ll /home/akiiiiiiiio/hello.scala
hello.class
hello$.class
hello.scala

おぉぉっ!!!!!!!
hello.classはなんとなくわかりますが、hello$.classってなんでしょうか??

scalaで実行

・・・とにかく実行してみよう!!!w

# ./scala /home/akiiiiiiiio/hello.class
error: IO error while decoding /home/akiiiiiiiio/hello.class with UTF-8
Please try specifying another one using the -encoding option
one error found

んぁっ!!
なんとここまできてまさかの実行時にエラーが、、、汗
-encodingオプションを使ってUTF-8で実行しろみたいな意味ですか??汗

ふとscalacのヘルプを見ると以下のようなオプションがありました。

# ./scalac
[snip]

  -encoding <encoding>           Specify character encoding used by source files

[snip]

これはもしやと思いもう一度コンパイル、実行してみました。

# ./scalac /home/akiiiiiiiio/hello.scala -d /home/akiiiiiiiio/ -encoding UTF-8
# ./scala /home/akiiiiiiiio/hello.class 
error: IO error while decoding /home/akiiiiiiiio/hello.class with UTF-8
Please try specifying another one using the -encoding option
one error found

だめか。。。
試しに実行環境の文字コードも確認してみましたが、問題なさそうです。

# echo $LANG
ja_JP.utf8

ん〜〜〜。。