Haxeのインストールが終わり、haxe
とhaxlib
コマンドが使える状態になったら、さっそくコードを書いて動かしてみます。最初のプログラムは予想される通り、伝統的なHello Worldです。テキストエディタを起動して次のコードを打ち込みます。
class Hello {
static function main() {
trace("Hello, world!");
}
}
任意の作業用ディレクトリに、この内容のテキストファイルをHello.hxという名前で保存します。Haxeのソースコードファイルの拡張子は「.hx」です。
このHello Worldプログラムを実行する方法はたくさんあります。Haxeコンパイラは他の言語のソースコードやVMのバイトコードを出力するので、その分だけ実行方法があります。
まずは、もっとも簡単な方法を紹介します。ターミナルアプリケーションを起動して、ファイルを保存したディレクトリに移動します。
$ cd path/to/hello-world
続いて、次のコマンドを打ち込みます。
$ haxe --main Hello --interp Hello.hx:3: Hello, world!
“Hello, world!”というテキストが出力されました。ファイル名と行番号も出力されるため、シンプルさと美しさが損なわれていると感じるかもしれませんが、大体は期待したとおりでしょう。–main
は、実行するmain関数(メソッド)を含むクラスの名前を指定するオプションです。このMainとなるクラスの名前は、ファイル名の拡張子を除いた名前と一致させる必要があります。–interp
は、ターゲットを生成するのではなく、コンパイラに直接その場で実行させることを指示するものです。
次に、別の言語をターゲットターゲットしてコードを生成させてみます。全部やるのは大変なので、JavaScriptとNekoVMだけをやってみます。
先ほどと同じディレクトリで、次のコマンドを打ち込みます。
$ haxe --main Hello --js hello.js
すると、同じディレクトリにhello.js
というファイルが生成されます。
$ ls Hello.hx hello.js
このhello.js
は、HTMLに読み込んでWebブラウザから実行することも出来ますし、Node.jsで実行することも出来ます。試しに、Node.jsで実行してみます。
$ node hello.js Hello.hx:3: Hello, world!
先ほどの–interp
を使ったときと同じ出力になりました。
NecoVMの場合は次のようにします。
$ haxe --main Hello --neko hello.n $ ls Hello.hx hello.js hello.n
hello.n
というファイルが生成されました。NecoVMのバイトコードのファイルは、拡張子が「.n」となります。
実行してみます。
$ neko hello.n Hello.hx:3: Hello, world!
同じ結果が得られました。
他の言語をターゲットとする場合も、同じような手順でできます。ただし、いくつかのターゲットは環境を追加でインストールする必要があります。どれもhaxlib
でインストール出来ます。それらについては別のページを用意する予定です。今すぐ知りたい場合はマニュアルを参照してください。