本稿は『月刊DBマガジン 2009/09月号』の記事「Javaの限界を超えて実用化を目指す、新開発言語「Scala」のメリットとは」を転載し、一部修正したものです。
はじめに
前回に引き続き、Javaの後継候補として注目されているプログラム開発言語「Scala」について説明していきます。今回は、ScalaがJavaの代替として使える点(「ベターJava」として使える点)に注目します。
シリーズ前編として、前回はScalaのメリットや、基礎的な文法について説明しました。シリーズ後編となる今回は、プログラムのコンパイルや、データベース接続について扱っていきます。
これまでの連載
コンパイルとデータベース接続
ここからはプログラムのコンパイルとデータベース接続を扱います。なお、以降すべてのプログラムを実行するためにはエディタの文字コードを、UTF-8に設定する必要があります(UTF-8以外の文字コードでは、日本語などの取り扱いに失敗します)。
Scalaでのソースコードの記述方法には次の特徴があります。
- ファイル名とそのファイル中に定義してあるクラス名を一致させる必要はない(見やすさを考えると一致させておくほうが好ましい)
- 1ファイル中に複数のclassとobjectを定義できる
- 文字コードはUTF-8を推奨(日本語を含む場合は必須)
main
関数が含まれるクラスはobjectとして定義
では、MainApplication.scalaというファイルを作成し、LIST21に示すコードを記述したら、コンパイルして実行してみましょう。ビルドコマンドは次のとおりです。
scalac ビルドしたいファイル名
object MainApplication { def main(args:Array[String]){ println(">>>start application") val second = new SecondClass second.printArray(args) println("end application>>>") } } class SecondClass { def printArray(array:Array[String]) = { array.foreach(item => println(item)) } }
コマンドラインから上記ファイルを保存したフォルダに移動し、下記コマンドを入力すると、.classファイルが作成されます。
(scalaコードが置かれたフォルダ)> scalac MainApplication.scala
なお、.classファイルは、Javaのclassファイルと互換しています。例えばjavap
コマンドなどを実行できます。実行コマンドは、次のとおりです。
scala 実行したいクラス名
続けて、LIST22のコマンドを入力して実行してみましょう(Scalaコマンドのオプション)。すると、main
関数が呼び出され、SecondClassのprintArray
関数が呼び出されていることが確認できます。
C:¥scala> scala MainApplication >>>start application end application>>> ●続けて、以下を入力してみましょう C:¥scala> scala MainApplication 1 2 3 >>>start application 1 2 3 end application>>>
Javaのビルド環境Maven2の使用
コマンドラインからのビルドを紹介しましたが、ある程度以上の規模のアプリケーション開発では、Javaのビルド環境であるApache Ant/IvyやMaven2(あるいは、scala独自のビルド環境であるsbt)の使用を推奨します。ここでは、後述のWebフレームワークLiftwebで用いられるMaven2の使用について解説します。
Mavenは、必要な情報を設定ファイルに記述すると、必要なファイルを自動でダウンロードし、適切なコンパイルオプションを設定してビルドしてくれる便利なツールです(Mavenダウンロードページ)。
Mavenのインストール
Mavenはダウンロードページより圧縮ファイルをダウンロードし、任意の場所に解凍するとインストールできます(ここでは、C:¥Program Files¥Apache Group¥apache-maven-2.1.0
に解凍したとします)。次に、環境変数を設定します(表3は設定例です)。環境によっては、設定後にログオフや再起動が必要になることがあります。
コマンドプロンプトまたはターミナルから、LIST23のコマンドを入力して、同じように表示されればインストールの完了です。
Windowsでの環境変数の設定 | |
JAVA_HOME | C:¥Program Files¥Java¥jdk1.6.0_14 |
M2_HOME | C:¥Program Files¥Apache Group¥apache-maven-2.1.0 |
M2 | %M2_HOME%¥bin |
PATH | %JAVA_HOME%¥bin;%M2% |
Linux(Unix)での環境変数の設定 | |
JAVA_HOME | /usr/java/default |
M2_HOME | /usr/local/src/apache-maven-2.1.0 |
M2 | $M2_HOME/bin |
PATH | $PATH:$HOME/bin:$JAVA_HOME/bin:$M2 |
C:¥>mvn --version Apache Maven 2.1.0 (r755702; 2009-03-19 04:10:27+0900) Java version: 1.6.0_14 Java home: C:¥Program Files¥Java¥jdk1.6.0_14¥jre Default locale: ja_JP, platform encoding: MS932 OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"